My Project
Loading...
Searching...
No Matches
stm32f3xx_hal_uart_ex.h
Go to the documentation of this file.
1
19/* Define to prevent recursive inclusion -------------------------------------*/
20#ifndef STM32F3xx_HAL_UART_EX_H
21#define STM32F3xx_HAL_UART_EX_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32f3xx_hal_def.h"
29
38/* Exported types ------------------------------------------------------------*/
46typedef struct
47{
48 uint32_t WakeUpEvent;
53 uint16_t AddressLength;
56 uint8_t Address;
58
63/* Exported constants --------------------------------------------------------*/
71#if defined(USART_CR1_M1)
72#define UART_WORDLENGTH_7B USART_CR1_M1
73#endif /* USART_CR1_M1 */
74#define UART_WORDLENGTH_8B 0x00000000U
75#if defined (USART_CR1_M0)
76#define UART_WORDLENGTH_9B USART_CR1_M0
77#else
78#define UART_WORDLENGTH_9B USART_CR1_M
79#endif /* USART_CR1_M0 */
87#define UART_ADDRESS_DETECT_4B 0x00000000U
88#define UART_ADDRESS_DETECT_7B USART_CR2_ADDM7
97/* Exported macros -----------------------------------------------------------*/
98/* Exported functions --------------------------------------------------------*/
107/* Initialization and de-initialization functions ****************************/
108HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime,
109 uint32_t DeassertionTime);
110
120
129/* Peripheral Control functions **********************************************/
133
135
136
137HAL_StatusTypeDef HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint16_t *RxLen,
138 uint32_t Timeout);
141
143
144
153/* Private macros ------------------------------------------------------------*/
163#if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || defined(STM32F302xC) \
164 || defined(STM32F303xC) || defined(STM32F358xx)
165#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
166 do { \
167 if((__HANDLE__)->Instance == USART1) \
168 { \
169 switch(__HAL_RCC_GET_USART1_SOURCE()) \
170 { \
171 case RCC_USART1CLKSOURCE_PCLK2: \
172 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
173 break; \
174 case RCC_USART1CLKSOURCE_HSI: \
175 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
176 break; \
177 case RCC_USART1CLKSOURCE_SYSCLK: \
178 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
179 break; \
180 case RCC_USART1CLKSOURCE_LSE: \
181 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
182 break; \
183 default: \
184 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
185 break; \
186 } \
187 } \
188 else if((__HANDLE__)->Instance == USART2) \
189 { \
190 switch(__HAL_RCC_GET_USART2_SOURCE()) \
191 { \
192 case RCC_USART2CLKSOURCE_PCLK1: \
193 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
194 break; \
195 case RCC_USART2CLKSOURCE_HSI: \
196 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
197 break; \
198 case RCC_USART2CLKSOURCE_SYSCLK: \
199 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
200 break; \
201 case RCC_USART2CLKSOURCE_LSE: \
202 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
203 break; \
204 default: \
205 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
206 break; \
207 } \
208 } \
209 else if((__HANDLE__)->Instance == USART3) \
210 { \
211 switch(__HAL_RCC_GET_USART3_SOURCE()) \
212 { \
213 case RCC_USART3CLKSOURCE_PCLK1: \
214 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
215 break; \
216 case RCC_USART3CLKSOURCE_HSI: \
217 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
218 break; \
219 case RCC_USART3CLKSOURCE_SYSCLK: \
220 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
221 break; \
222 case RCC_USART3CLKSOURCE_LSE: \
223 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
224 break; \
225 default: \
226 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
227 break; \
228 } \
229 } \
230 else if((__HANDLE__)->Instance == UART4) \
231 { \
232 switch(__HAL_RCC_GET_UART4_SOURCE()) \
233 { \
234 case RCC_UART4CLKSOURCE_PCLK1: \
235 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
236 break; \
237 case RCC_UART4CLKSOURCE_HSI: \
238 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
239 break; \
240 case RCC_UART4CLKSOURCE_SYSCLK: \
241 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
242 break; \
243 case RCC_UART4CLKSOURCE_LSE: \
244 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
245 break; \
246 default: \
247 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
248 break; \
249 } \
250 } \
251 else if ((__HANDLE__)->Instance == UART5) \
252 { \
253 switch(__HAL_RCC_GET_UART5_SOURCE()) \
254 { \
255 case RCC_UART5CLKSOURCE_PCLK1: \
256 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
257 break; \
258 case RCC_UART5CLKSOURCE_HSI: \
259 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
260 break; \
261 case RCC_UART5CLKSOURCE_SYSCLK: \
262 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
263 break; \
264 case RCC_UART5CLKSOURCE_LSE: \
265 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
266 break; \
267 default: \
268 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
269 break; \
270 } \
271 } \
272 else \
273 { \
274 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
275 } \
276 } while(0U)
277#elif defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || defined(STM32F301x8) \
278 || defined(STM32F302x8) || defined(STM32F318xx)
279#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
280 do { \
281 if((__HANDLE__)->Instance == USART1) \
282 { \
283 switch(__HAL_RCC_GET_USART1_SOURCE()) \
284 { \
285 case RCC_USART1CLKSOURCE_PCLK1: \
286 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
287 break; \
288 case RCC_USART1CLKSOURCE_HSI: \
289 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
290 break; \
291 case RCC_USART1CLKSOURCE_SYSCLK: \
292 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
293 break; \
294 case RCC_USART1CLKSOURCE_LSE: \
295 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
296 break; \
297 default: \
298 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
299 break; \
300 } \
301 } \
302 else if((__HANDLE__)->Instance == USART2) \
303 { \
304 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
305 } \
306 else if((__HANDLE__)->Instance == USART3) \
307 { \
308 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
309 } \
310 else \
311 { \
312 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
313 } \
314 } while(0U)
315#else
316#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
317 do { \
318 if((__HANDLE__)->Instance == USART1) \
319 { \
320 switch(__HAL_RCC_GET_USART1_SOURCE()) \
321 { \
322 case RCC_USART1CLKSOURCE_PCLK2: \
323 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
324 break; \
325 case RCC_USART1CLKSOURCE_HSI: \
326 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
327 break; \
328 case RCC_USART1CLKSOURCE_SYSCLK: \
329 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
330 break; \
331 case RCC_USART1CLKSOURCE_LSE: \
332 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
333 break; \
334 default: \
335 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
336 break; \
337 } \
338 } \
339 else if((__HANDLE__)->Instance == USART2) \
340 { \
341 switch(__HAL_RCC_GET_USART2_SOURCE()) \
342 { \
343 case RCC_USART2CLKSOURCE_PCLK1: \
344 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
345 break; \
346 case RCC_USART2CLKSOURCE_HSI: \
347 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
348 break; \
349 case RCC_USART2CLKSOURCE_SYSCLK: \
350 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
351 break; \
352 case RCC_USART2CLKSOURCE_LSE: \
353 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
354 break; \
355 default: \
356 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
357 break; \
358 } \
359 } \
360 else if((__HANDLE__)->Instance == USART3) \
361 { \
362 switch(__HAL_RCC_GET_USART3_SOURCE()) \
363 { \
364 case RCC_USART3CLKSOURCE_PCLK1: \
365 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
366 break; \
367 case RCC_USART3CLKSOURCE_HSI: \
368 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
369 break; \
370 case RCC_USART3CLKSOURCE_SYSCLK: \
371 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
372 break; \
373 case RCC_USART3CLKSOURCE_LSE: \
374 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
375 break; \
376 default: \
377 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
378 break; \
379 } \
380 } \
381 else \
382 { \
383 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
384 } \
385 } while(0U)
386#endif /* STM32F302xE || STM32F303xE || STM32F398xx || STM32F302xC || STM32F303xC || STM32F358xx */
387
397#if defined (USART_CR1_M1)
398#define UART_MASK_COMPUTATION(__HANDLE__) \
399 do { \
400 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
401 { \
402 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
403 { \
404 (__HANDLE__)->Mask = 0x01FFU ; \
405 } \
406 else \
407 { \
408 (__HANDLE__)->Mask = 0x00FFU ; \
409 } \
410 } \
411 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
412 { \
413 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
414 { \
415 (__HANDLE__)->Mask = 0x00FFU ; \
416 } \
417 else \
418 { \
419 (__HANDLE__)->Mask = 0x007FU ; \
420 } \
421 } \
422 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \
423 { \
424 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
425 { \
426 (__HANDLE__)->Mask = 0x007FU ; \
427 } \
428 else \
429 { \
430 (__HANDLE__)->Mask = 0x003FU ; \
431 } \
432 } \
433 else \
434 { \
435 (__HANDLE__)->Mask = 0x0000U; \
436 } \
437 } while(0U)
438
439#else
440#define UART_MASK_COMPUTATION(__HANDLE__) \
441 do { \
442 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
443 { \
444 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
445 { \
446 (__HANDLE__)->Mask = 0x01FFU ; \
447 } \
448 else \
449 { \
450 (__HANDLE__)->Mask = 0x00FFU ; \
451 } \
452 } \
453 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
454 { \
455 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
456 { \
457 (__HANDLE__)->Mask = 0x00FFU ; \
458 } \
459 else \
460 { \
461 (__HANDLE__)->Mask = 0x007FU ; \
462 } \
463 } \
464 else \
465 { \
466 (__HANDLE__)->Mask = 0x0000U; \
467 } \
468 } while(0U)
469
470#endif /* USART_CR1_M1 */
471
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))
481#else
482#define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_8B) || \
483 ((__LENGTH__) == UART_WORDLENGTH_9B))
484#endif /* USART_CR1_M1 */
485
491#define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \
492 ((__ADDRESS__) == UART_ADDRESS_DETECT_7B))
493
498/* Private functions ---------------------------------------------------------*/
499
508#ifdef __cplusplus
509}
510#endif
511
512#endif /* STM32F3xx_HAL_UART_EX_H */
513
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