Bonjour a tous,
me revoilà lol, je souhaiterais avoir une confirmation et par la suite une réponse a ma question sur le fonctionnement précis de cette variable.
Pouvez me confirmer si je suis ds le vrai ou pas du tout ?
On crée une variable qui prendra la valeur RESET.
Code : Sélectionner tout - Visualiser dans une fenêtre à part __IO ITStatus UartReady = RESET;
Décomposition de cette déclaration:
C'est un type qualifieur (ici volatile) qui indique au compilateur qu'une variable peut voir sa valeur évoluer, soit par une interruption soit par un périphérique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part #define __IO volatile /*!< Defines 'read / write' permissions
Donc ITStatus est un typdef sur une énumération
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 typedef enum { RESET = 0, SET = !RESET } FlagStatus, ITStatus;
UartReady est une variable qui indique si l'UART est pret a travailler ou si il est tjrs entrain de travailler!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 //UartReady /*##-5- Wait for the end of the transfer ###################################*/ while (UartReady != SET) { } /* Reset transmission flag */ UartReady = RESET;
Tant que UartReady est égal a 0 (==) on reste ds la boucle.
Question concernant la boucle while avec la variable UartReady:
Je n'arrive pas retrouver ds les fichiers sources un quelconque endroit ou la variable UartReady est mise a 1! Peut que cette variable est mise a 1 de manière HARDWARE (peut etre que je dis n'importe quoi) et ca peut expliquer la manière dont elle a était déclaré ?
J'ai bien ce typdef "HAL_UART_StateTypeDef" sur le status des transmissions mais je ne trouve ou je n'arrive pas a faire le lien avec ma variable UartReady!
Ou encore ce typedef qui correspond au retour de la fonction HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) c'est après l'appel de cette fonction qu'on entre ds la boucle while (UartReady != SET)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 typedef enum { HAL_UART_STATE_RESET = 0x00, /*!< Peripheral is not yet Initialized */ HAL_UART_STATE_READY = 0x01, /*!< Peripheral Initialized and ready for use */ HAL_UART_STATE_BUSY = 0x02, /*!< an internal process is ongoing */ HAL_UART_STATE_BUSY_TX = 0x12, /*!< Data Transmission process is ongoing */ HAL_UART_STATE_BUSY_RX = 0x22, /*!< Data Reception process is ongoing */ HAL_UART_STATE_BUSY_TX_RX = 0x32, /*!< Data Transmission and Reception process is ongoing */ HAL_UART_STATE_TIMEOUT = 0x03, /*!< Timeout state */ HAL_UART_STATE_ERROR = 0x04 /*!< Error */ }HAL_UART_StateTypeDef;
Si quelqu’un a une idée je le ou la remercie d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 typedef enum { HAL_OK = 0x00, HAL_ERROR = 0x01, HAL_BUSY = 0x02, HAL_TIMEOUT = 0x03 } HAL_StatusTypeDef;
Partager