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 ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
__IO ITStatus UartReady = RESET;
On crée une variable qui prendra la valeur RESET.

Décomposition de cette déclaration:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
#define     __IO    volatile             /*!< Defines 'read / write' permissions
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
1
2
3
4
5
typedef enum
{
  RESET = 0,
  SET = !RESET
} FlagStatus, ITStatus;
Donc ITStatus est un typdef sur une énumération

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;
UartReady est une variable qui indique si l'UART est pret a travailler ou si il est tjrs entrain de travailler!

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!

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;
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
typedef enum 
{
  HAL_OK       = 0x00,
  HAL_ERROR    = 0x01,
  HAL_BUSY     = 0x02,
  HAL_TIMEOUT  = 0x03
} HAL_StatusTypeDef;
Si quelqu’un a une idée je le ou la remercie d'avance!