STM CMSIS
stm32f4xx_hal_usart.h
Go to the documentation of this file.
1 
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F4xx_HAL_USART_H
40 #define __STM32F4xx_HAL_USART_H
41 
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45 
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32f4xx_hal_def.h"
48 
57 /* Exported types ------------------------------------------------------------*/
65 typedef struct
66 {
67  uint32_t BaudRate;
72  uint32_t WordLength;
75  uint32_t StopBits;
78  uint32_t Parity;
85  uint32_t Mode;
88  uint32_t CLKPolarity;
91  uint32_t CLKPhase;
94  uint32_t CLKLastBit;
98 
102 typedef enum
103 {
113 
117 typedef struct
118 {
119  USART_TypeDef *Instance; /* USART registers base address */
120 
121  USART_InitTypeDef Init; /* Usart communication parameters */
122 
123  uint8_t *pTxBuffPtr; /* Pointer to Usart Tx transfer Buffer */
124 
125  uint16_t TxXferSize; /* Usart Tx Transfer size */
126 
127  __IO uint16_t TxXferCount; /* Usart Tx Transfer Counter */
128 
129  uint8_t *pRxBuffPtr; /* Pointer to Usart Rx transfer Buffer */
130 
131  uint16_t RxXferSize; /* Usart Rx Transfer size */
132 
133  __IO uint16_t RxXferCount; /* Usart Rx Transfer Counter */
134 
135  DMA_HandleTypeDef *hdmatx; /* Usart Tx DMA Handle parameters */
136 
137  DMA_HandleTypeDef *hdmarx; /* Usart Rx DMA Handle parameters */
138 
139  HAL_LockTypeDef Lock; /* Locking object */
140 
141  __IO HAL_USART_StateTypeDef State; /* Usart communication state */
142 
143  __IO uint32_t ErrorCode; /* USART Error code */
144 
150 /* Exported constants --------------------------------------------------------*/
159 #define HAL_USART_ERROR_NONE ((uint32_t)0x00000000U)
160 #define HAL_USART_ERROR_PE ((uint32_t)0x00000001U)
161 #define HAL_USART_ERROR_NE ((uint32_t)0x00000002U)
162 #define HAL_USART_ERROR_FE ((uint32_t)0x00000004U)
163 #define HAL_USART_ERROR_ORE ((uint32_t)0x00000008U)
164 #define HAL_USART_ERROR_DMA ((uint32_t)0x00000010U)
172 #define USART_WORDLENGTH_8B ((uint32_t)0x00000000U)
173 #define USART_WORDLENGTH_9B ((uint32_t)USART_CR1_M)
174 
181 #define USART_STOPBITS_1 ((uint32_t)0x00000000U)
182 #define USART_STOPBITS_0_5 ((uint32_t)USART_CR2_STOP_0)
183 #define USART_STOPBITS_2 ((uint32_t)USART_CR2_STOP_1)
184 #define USART_STOPBITS_1_5 ((uint32_t)(USART_CR2_STOP_0 | USART_CR2_STOP_1))
185 
192 #define USART_PARITY_NONE ((uint32_t)0x00000000U)
193 #define USART_PARITY_EVEN ((uint32_t)USART_CR1_PCE)
194 #define USART_PARITY_ODD ((uint32_t)(USART_CR1_PCE | USART_CR1_PS))
195 
202 #define USART_MODE_RX ((uint32_t)USART_CR1_RE)
203 #define USART_MODE_TX ((uint32_t)USART_CR1_TE)
204 #define USART_MODE_TX_RX ((uint32_t)(USART_CR1_TE |USART_CR1_RE))
205 
212 #define USART_CLOCK_DISABLE ((uint32_t)0x00000000U)
213 #define USART_CLOCK_ENABLE ((uint32_t)USART_CR2_CLKEN)
214 
221 #define USART_POLARITY_LOW ((uint32_t)0x00000000U)
222 #define USART_POLARITY_HIGH ((uint32_t)USART_CR2_CPOL)
223 
230 #define USART_PHASE_1EDGE ((uint32_t)0x00000000U)
231 #define USART_PHASE_2EDGE ((uint32_t)USART_CR2_CPHA)
232 
239 #define USART_LASTBIT_DISABLE ((uint32_t)0x00000000U)
240 #define USART_LASTBIT_ENABLE ((uint32_t)USART_CR2_LBCL)
241 
248 #define USART_NACK_ENABLE ((uint32_t)USART_CR3_NACK)
249 #define USART_NACK_DISABLE ((uint32_t)0x00000000U)
250 
259 #define USART_FLAG_TXE ((uint32_t)0x00000080U)
260 #define USART_FLAG_TC ((uint32_t)0x00000040U)
261 #define USART_FLAG_RXNE ((uint32_t)0x00000020U)
262 #define USART_FLAG_IDLE ((uint32_t)0x00000010U)
263 #define USART_FLAG_ORE ((uint32_t)0x00000008U)
264 #define USART_FLAG_NE ((uint32_t)0x00000004U)
265 #define USART_FLAG_FE ((uint32_t)0x00000002U)
266 #define USART_FLAG_PE ((uint32_t)0x00000001U)
267 
281 #define USART_IT_PE ((uint32_t)(USART_CR1_REG_INDEX << 28U | USART_CR1_PEIE))
282 #define USART_IT_TXE ((uint32_t)(USART_CR1_REG_INDEX << 28U | USART_CR1_TXEIE))
283 #define USART_IT_TC ((uint32_t)(USART_CR1_REG_INDEX << 28U | USART_CR1_TCIE))
284 #define USART_IT_RXNE ((uint32_t)(USART_CR1_REG_INDEX << 28U | USART_CR1_RXNEIE))
285 #define USART_IT_IDLE ((uint32_t)(USART_CR1_REG_INDEX << 28U | USART_CR1_IDLEIE))
286 
287 #define USART_IT_LBD ((uint32_t)(USART_CR2_REG_INDEX << 28U | USART_CR2_LBDIE))
288 
289 #define USART_IT_CTS ((uint32_t)(USART_CR3_REG_INDEX << 28U | USART_CR3_CTSIE))
290 #define USART_IT_ERR ((uint32_t)(USART_CR3_REG_INDEX << 28U | USART_CR3_EIE))
291 
299 /* Exported macro ------------------------------------------------------------*/
309 #define __HAL_USART_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_USART_STATE_RESET)
310 
326 #define __HAL_USART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
327 
347 #define __HAL_USART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__))
348 
354 #define __HAL_USART_CLEAR_PEFLAG(__HANDLE__) \
355  do{ \
356  __IO uint32_t tmpreg = 0x00U; \
357  tmpreg = (__HANDLE__)->Instance->SR; \
358  tmpreg = (__HANDLE__)->Instance->DR; \
359  UNUSED(tmpreg); \
360  } while(0)
361 
367 #define __HAL_USART_CLEAR_FEFLAG(__HANDLE__) __HAL_USART_CLEAR_PEFLAG(__HANDLE__)
368 
374 #define __HAL_USART_CLEAR_NEFLAG(__HANDLE__) __HAL_USART_CLEAR_PEFLAG(__HANDLE__)
375 
381 #define __HAL_USART_CLEAR_OREFLAG(__HANDLE__) __HAL_USART_CLEAR_PEFLAG(__HANDLE__)
382 
388 #define __HAL_USART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_USART_CLEAR_PEFLAG(__HANDLE__)
389 
404 #define __HAL_USART_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((((__INTERRUPT__) >> 28U) == 1U)? ((__HANDLE__)->Instance->CR1 |= ((__INTERRUPT__) & USART_IT_MASK)): \
405  (((__INTERRUPT__) >> 28U) == 2U)? ((__HANDLE__)->Instance->CR2 |= ((__INTERRUPT__) & USART_IT_MASK)): \
406  ((__HANDLE__)->Instance->CR3 |= ((__INTERRUPT__) & USART_IT_MASK)))
407 #define __HAL_USART_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((((__INTERRUPT__) >> 28U) == 1U)? ((__HANDLE__)->Instance->CR1 &= ~((__INTERRUPT__) & USART_IT_MASK)): \
408  (((__INTERRUPT__) >> 28U) == 2U)? ((__HANDLE__)->Instance->CR2 &= ~((__INTERRUPT__) & USART_IT_MASK)): \
409  ((__HANDLE__)->Instance->CR3 &= ~ ((__INTERRUPT__) & USART_IT_MASK)))
410 
424 #define __HAL_USART_GET_IT_SOURCE(__HANDLE__, __IT__) (((((__IT__) >> 28U) == 1U)? (__HANDLE__)->Instance->CR1:(((((uint32_t)(__IT__)) >> 28U) == 2U)? \
425  (__HANDLE__)->Instance->CR2 : (__HANDLE__)->Instance->CR3)) & (((uint32_t)(__IT__)) & USART_IT_MASK))
426 
431 #define __HAL_USART_ONE_BIT_SAMPLE_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3|= USART_CR3_ONEBIT)
432 
437 #define __HAL_USART_ONE_BIT_SAMPLE_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR3 &= (uint16_t)~((uint16_t)USART_CR3_ONEBIT))
438 
444 #define __HAL_USART_ENABLE(__HANDLE__) ( (__HANDLE__)->Instance->CR1 |= USART_CR1_UE)
445 
451 #define __HAL_USART_DISABLE(__HANDLE__) ( (__HANDLE__)->Instance->CR1 &= ~USART_CR1_UE)
452 
456 /* Exported functions --------------------------------------------------------*/
464 /* Initialization/de-initialization functions **********************************/
465 HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart);
466 HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart);
467 void HAL_USART_MspInit(USART_HandleTypeDef *husart);
468 void HAL_USART_MspDeInit(USART_HandleTypeDef *husart);
476 /* IO operation functions *******************************************************/
477 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size, uint32_t Timeout);
478 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
479 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
480 HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);
481 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);
482 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
483 HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);
484 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);
485 HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
486 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart);
487 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart);
488 HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart);
489 
490 void HAL_USART_IRQHandler(USART_HandleTypeDef *husart);
491 void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart);
492 void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart);
493 void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart);
494 void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart);
495 void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart);
496 void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart);
504 /* Peripheral State functions ************************************************/
505 HAL_USART_StateTypeDef HAL_USART_GetState(USART_HandleTypeDef *husart);
506 uint32_t HAL_USART_GetError(USART_HandleTypeDef *husart);
514 /* Private types -------------------------------------------------------------*/
515 /* Private variables ---------------------------------------------------------*/
516 /* Private constants ---------------------------------------------------------*/
523 #define USART_IT_MASK ((uint32_t) USART_CR1_PEIE | USART_CR1_TXEIE | USART_CR1_TCIE | USART_CR1_RXNEIE | \
524  USART_CR1_IDLEIE | USART_CR2_LBDIE | USART_CR3_CTSIE | USART_CR3_EIE )
525 
526 #define USART_CR1_REG_INDEX 1U
527 #define USART_CR2_REG_INDEX 2U
528 #define USART_CR3_REG_INDEX 3U
529 
533 /* Private macros ------------------------------------------------------------*/
537 #define IS_USART_NACK_STATE(NACK) (((NACK) == USART_NACK_ENABLE) || \
538  ((NACK) == USART_NACK_DISABLE))
539 #define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LASTBIT_DISABLE) || \
540  ((LASTBIT) == USART_LASTBIT_ENABLE))
541 #define IS_USART_PHASE(CPHA) (((CPHA) == USART_PHASE_1EDGE) || ((CPHA) == USART_PHASE_2EDGE))
542 #define IS_USART_POLARITY(CPOL) (((CPOL) == USART_POLARITY_LOW) || ((CPOL) == USART_POLARITY_HIGH))
543 #define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_CLOCK_DISABLE) || \
544  ((CLOCK) == USART_CLOCK_ENABLE))
545 #define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WORDLENGTH_8B) || \
546  ((LENGTH) == USART_WORDLENGTH_9B))
547 #define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_STOPBITS_1) || \
548  ((STOPBITS) == USART_STOPBITS_0_5) || \
549  ((STOPBITS) == USART_STOPBITS_1_5) || \
550  ((STOPBITS) == USART_STOPBITS_2))
551 #define IS_USART_PARITY(PARITY) (((PARITY) == USART_PARITY_NONE) || \
552  ((PARITY) == USART_PARITY_EVEN) || \
553  ((PARITY) == USART_PARITY_ODD))
554 #define IS_USART_MODE(MODE) ((((MODE) & (uint32_t)0xFFF3) == 0x00U) && ((MODE) != (uint32_t)0x00U))
555 #define IS_USART_BAUDRATE(BAUDRATE) ((BAUDRATE) < 10500001U)
556 
557 #define USART_DIV(_PCLK_, _BAUD_) (((_PCLK_)*25U)/(2U*(_BAUD_)))
558 #define USART_DIVMANT(_PCLK_, _BAUD_) (USART_DIV((_PCLK_), (_BAUD_))/100U)
559 #define USART_DIVFRAQ(_PCLK_, _BAUD_) (((USART_DIV((_PCLK_), (_BAUD_)) - (USART_DIVMANT((_PCLK_), (_BAUD_)) * 100U)) * 16U + 50U) / 100U)
560 #define USART_BRR(_PCLK_, _BAUD_) ((USART_DIVMANT((_PCLK_), (_BAUD_)) << 4U)|(USART_DIVFRAQ((_PCLK_), (_BAUD_)) & 0x0FU))
561 
565 /* Private functions ---------------------------------------------------------*/
582 #ifdef __cplusplus
583 }
584 #endif
585 
586 #endif /* __STM32F4xx_HAL_USART_H */
587 
588 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
uint32_t CLKPhase
Definition: stm32f4xx_hal_usart.h:91
Definition: stm32f4xx_hal_usart.h:110
Definition: stm32f4xx_hal_usart.h:107
This file contains HAL common defines, enumeration, macros and structures definitions.
uint32_t StopBits
Definition: stm32f4xx_hal_usart.h:75
Definition: stm32f4xx_hal_usart.h:106
uint32_t CLKPolarity
Definition: stm32f4xx_hal_usart.h:88
uint32_t Mode
Definition: stm32f4xx_hal_usart.h:85
Definition: stm32f4xx_hal_usart.h:111
Definition: stm32f4xx_hal_usart.h:109
uint32_t Parity
Definition: stm32f4xx_hal_usart.h:78
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32f4xx_hal_def.h:57
#define __IO
Definition: core_cm0.h:213
uint32_t BaudRate
Definition: stm32f4xx_hal_usart.h:67
Universal Synchronous Asynchronous Receiver Transmitter.
Definition: stm32f401xc.h:518
USART handle Structure definition.
Definition: stm32f4xx_hal_usart.h:117
uint32_t CLKLastBit
Definition: stm32f4xx_hal_usart.h:94
Definition: stm32f4xx_hal_usart.h:108
HAL_LockTypeDef
HAL Lock structures definition.
Definition: stm32f4xx_hal_def.h:68
USART Init Structure definition.
Definition: stm32f4xx_hal_usart.h:65
DMA handle Structure definition.
Definition: stm32f4xx_hal_dma.h:157
HAL_USART_StateTypeDef
HAL State structures definition.
Definition: stm32f4xx_hal_usart.h:102
Definition: stm32f4xx_hal_usart.h:105
uint32_t WordLength
Definition: stm32f4xx_hal_usart.h:72
Definition: stm32f4xx_hal_usart.h:104