20#ifndef STM32F3xx_HAL_UART_EX_H
21#define STM32F3xx_HAL_UART_EX_H
71#if defined(USART_CR1_M1)
72#define UART_WORDLENGTH_7B USART_CR1_M1
74#define UART_WORDLENGTH_8B 0x00000000U
75#if defined (USART_CR1_M0)
76#define UART_WORDLENGTH_9B USART_CR1_M0
78#define UART_WORDLENGTH_9B USART_CR1_M
87#define UART_ADDRESS_DETECT_4B 0x00000000U
88#define UART_ADDRESS_DETECT_7B USART_CR2_ADDM7
109 uint32_t DeassertionTime);
163#if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || defined(STM32F302xC) \
164 || defined(STM32F303xC) || defined(STM32F358xx)
165#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
167 if((__HANDLE__)->Instance == USART1) \
169 switch(__HAL_RCC_GET_USART1_SOURCE()) \
171 case RCC_USART1CLKSOURCE_PCLK2: \
172 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
174 case RCC_USART1CLKSOURCE_HSI: \
175 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
177 case RCC_USART1CLKSOURCE_SYSCLK: \
178 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
180 case RCC_USART1CLKSOURCE_LSE: \
181 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
184 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
188 else if((__HANDLE__)->Instance == USART2) \
190 switch(__HAL_RCC_GET_USART2_SOURCE()) \
192 case RCC_USART2CLKSOURCE_PCLK1: \
193 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
195 case RCC_USART2CLKSOURCE_HSI: \
196 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
198 case RCC_USART2CLKSOURCE_SYSCLK: \
199 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
201 case RCC_USART2CLKSOURCE_LSE: \
202 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
205 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
209 else if((__HANDLE__)->Instance == USART3) \
211 switch(__HAL_RCC_GET_USART3_SOURCE()) \
213 case RCC_USART3CLKSOURCE_PCLK1: \
214 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
216 case RCC_USART3CLKSOURCE_HSI: \
217 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
219 case RCC_USART3CLKSOURCE_SYSCLK: \
220 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
222 case RCC_USART3CLKSOURCE_LSE: \
223 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
226 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
230 else if((__HANDLE__)->Instance == UART4) \
232 switch(__HAL_RCC_GET_UART4_SOURCE()) \
234 case RCC_UART4CLKSOURCE_PCLK1: \
235 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
237 case RCC_UART4CLKSOURCE_HSI: \
238 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
240 case RCC_UART4CLKSOURCE_SYSCLK: \
241 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
243 case RCC_UART4CLKSOURCE_LSE: \
244 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
247 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
251 else if ((__HANDLE__)->Instance == UART5) \
253 switch(__HAL_RCC_GET_UART5_SOURCE()) \
255 case RCC_UART5CLKSOURCE_PCLK1: \
256 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
258 case RCC_UART5CLKSOURCE_HSI: \
259 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
261 case RCC_UART5CLKSOURCE_SYSCLK: \
262 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
264 case RCC_UART5CLKSOURCE_LSE: \
265 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
268 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
274 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
277#elif defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || defined(STM32F301x8) \
278 || defined(STM32F302x8) || defined(STM32F318xx)
279#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
281 if((__HANDLE__)->Instance == USART1) \
283 switch(__HAL_RCC_GET_USART1_SOURCE()) \
285 case RCC_USART1CLKSOURCE_PCLK1: \
286 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
288 case RCC_USART1CLKSOURCE_HSI: \
289 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
291 case RCC_USART1CLKSOURCE_SYSCLK: \
292 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
294 case RCC_USART1CLKSOURCE_LSE: \
295 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
298 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
302 else if((__HANDLE__)->Instance == USART2) \
304 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
306 else if((__HANDLE__)->Instance == USART3) \
308 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
312 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
316#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
318 if((__HANDLE__)->Instance == USART1) \
320 switch(__HAL_RCC_GET_USART1_SOURCE()) \
322 case RCC_USART1CLKSOURCE_PCLK2: \
323 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
325 case RCC_USART1CLKSOURCE_HSI: \
326 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
328 case RCC_USART1CLKSOURCE_SYSCLK: \
329 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
331 case RCC_USART1CLKSOURCE_LSE: \
332 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
335 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
339 else if((__HANDLE__)->Instance == USART2) \
341 switch(__HAL_RCC_GET_USART2_SOURCE()) \
343 case RCC_USART2CLKSOURCE_PCLK1: \
344 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
346 case RCC_USART2CLKSOURCE_HSI: \
347 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
349 case RCC_USART2CLKSOURCE_SYSCLK: \
350 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
352 case RCC_USART2CLKSOURCE_LSE: \
353 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
356 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
360 else if((__HANDLE__)->Instance == USART3) \
362 switch(__HAL_RCC_GET_USART3_SOURCE()) \
364 case RCC_USART3CLKSOURCE_PCLK1: \
365 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
367 case RCC_USART3CLKSOURCE_HSI: \
368 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
370 case RCC_USART3CLKSOURCE_SYSCLK: \
371 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
373 case RCC_USART3CLKSOURCE_LSE: \
374 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
377 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
383 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
397#if defined (USART_CR1_M1)
398#define UART_MASK_COMPUTATION(__HANDLE__) \
400 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
402 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
404 (__HANDLE__)->Mask = 0x01FFU ; \
408 (__HANDLE__)->Mask = 0x00FFU ; \
411 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
413 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
415 (__HANDLE__)->Mask = 0x00FFU ; \
419 (__HANDLE__)->Mask = 0x007FU ; \
422 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \
424 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
426 (__HANDLE__)->Mask = 0x007FU ; \
430 (__HANDLE__)->Mask = 0x003FU ; \
435 (__HANDLE__)->Mask = 0x0000U; \
440#define UART_MASK_COMPUTATION(__HANDLE__) \
442 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
444 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
446 (__HANDLE__)->Mask = 0x01FFU ; \
450 (__HANDLE__)->Mask = 0x00FFU ; \
453 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
455 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
457 (__HANDLE__)->Mask = 0x00FFU ; \
461 (__HANDLE__)->Mask = 0x007FU ; \
466 (__HANDLE__)->Mask = 0x0000U; \
477#if defined (USART_CR1_M1)
478#define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_7B) || \
479 ((__LENGTH__) == UART_WORDLENGTH_8B) || \
480 ((__LENGTH__) == UART_WORDLENGTH_9B))
482#define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_8B) || \
483 ((__LENGTH__) == UART_WORDLENGTH_9B))
491#define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \
492 ((__ADDRESS__) == UART_ADDRESS_DETECT_7B))
HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime)
void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
HAL_UART_RxEventTypeTypeDef HAL_UARTEx_GetRxEventType(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint16_t *RxLen, uint32_t Timeout)
HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection)
HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength)
HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart)
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
uint32_t HAL_UART_RxEventTypeTypeDef
HAL UART Rx Event type definition.
Definition: stm32f3xx_hal_uart.h:206
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition
Definition: stm32f3xx_hal_def.h:39
UART wake up from stop mode parameters.
Definition: stm32f3xx_hal_uart_ex.h:47
uint8_t Address
Definition: stm32f3xx_hal_uart_ex.h:56
uint32_t WakeUpEvent
Definition: stm32f3xx_hal_uart_ex.h:48
uint16_t AddressLength
Definition: stm32f3xx_hal_uart_ex.h:53
UART handle Structure definition.
Definition: stm32f3xx_hal_uart.h:212