STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_hal_irda_ex.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L4xx_HAL_IRDA_EX_H
22 #define STM32L4xx_HAL_IRDA_EX_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal_def.h"
30 
39 /* Exported types ------------------------------------------------------------*/
40 /* Exported constants --------------------------------------------------------*/
48 #define IRDA_WORDLENGTH_7B USART_CR1_M1
49 #define IRDA_WORDLENGTH_8B 0x00000000U
50 #define IRDA_WORDLENGTH_9B USART_CR1_M0
59 /* Exported macros -----------------------------------------------------------*/
60 
61 /* Private macros ------------------------------------------------------------*/
62 
72 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) \
73  || defined (STM32L496xx) || defined (STM32L4A6xx) \
74  || defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx)
75 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
76  do { \
77  if((__HANDLE__)->Instance == USART1) \
78  { \
79  switch(__HAL_RCC_GET_USART1_SOURCE()) \
80  { \
81  case RCC_USART1CLKSOURCE_PCLK2: \
82  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2; \
83  break; \
84  case RCC_USART1CLKSOURCE_HSI: \
85  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
86  break; \
87  case RCC_USART1CLKSOURCE_SYSCLK: \
88  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
89  break; \
90  case RCC_USART1CLKSOURCE_LSE: \
91  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
92  break; \
93  default: \
94  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
95  break; \
96  } \
97  } \
98  else if((__HANDLE__)->Instance == USART2) \
99  { \
100  switch(__HAL_RCC_GET_USART2_SOURCE()) \
101  { \
102  case RCC_USART2CLKSOURCE_PCLK1: \
103  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
104  break; \
105  case RCC_USART2CLKSOURCE_HSI: \
106  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
107  break; \
108  case RCC_USART2CLKSOURCE_SYSCLK: \
109  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
110  break; \
111  case RCC_USART2CLKSOURCE_LSE: \
112  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
113  break; \
114  default: \
115  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
116  break; \
117  } \
118  } \
119  else if((__HANDLE__)->Instance == USART3) \
120  { \
121  switch(__HAL_RCC_GET_USART3_SOURCE()) \
122  { \
123  case RCC_USART3CLKSOURCE_PCLK1: \
124  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
125  break; \
126  case RCC_USART3CLKSOURCE_HSI: \
127  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
128  break; \
129  case RCC_USART3CLKSOURCE_SYSCLK: \
130  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
131  break; \
132  case RCC_USART3CLKSOURCE_LSE: \
133  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
134  break; \
135  default: \
136  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
137  break; \
138  } \
139  } \
140  else if((__HANDLE__)->Instance == UART4) \
141  { \
142  switch(__HAL_RCC_GET_UART4_SOURCE()) \
143  { \
144  case RCC_UART4CLKSOURCE_PCLK1: \
145  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
146  break; \
147  case RCC_UART4CLKSOURCE_HSI: \
148  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
149  break; \
150  case RCC_UART4CLKSOURCE_SYSCLK: \
151  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
152  break; \
153  case RCC_UART4CLKSOURCE_LSE: \
154  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
155  break; \
156  default: \
157  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
158  break; \
159  } \
160  } \
161  else if ((__HANDLE__)->Instance == UART5) \
162  { \
163  switch(__HAL_RCC_GET_UART5_SOURCE()) \
164  { \
165  case RCC_UART5CLKSOURCE_PCLK1: \
166  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
167  break; \
168  case RCC_UART5CLKSOURCE_HSI: \
169  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
170  break; \
171  case RCC_UART5CLKSOURCE_SYSCLK: \
172  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
173  break; \
174  case RCC_UART5CLKSOURCE_LSE: \
175  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
176  break; \
177  default: \
178  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
179  break; \
180  } \
181  } \
182  else \
183  { \
184  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
185  } \
186  } while(0)
187 #elif defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L431xx) || defined (STM32L433xx) || defined (STM32L443xx)
188 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
189  do { \
190  if((__HANDLE__)->Instance == USART1) \
191  { \
192  switch(__HAL_RCC_GET_USART1_SOURCE()) \
193  { \
194  case RCC_USART1CLKSOURCE_PCLK2: \
195  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2; \
196  break; \
197  case RCC_USART1CLKSOURCE_HSI: \
198  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
199  break; \
200  case RCC_USART1CLKSOURCE_SYSCLK: \
201  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
202  break; \
203  case RCC_USART1CLKSOURCE_LSE: \
204  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
205  break; \
206  default: \
207  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
208  break; \
209  } \
210  } \
211  else if((__HANDLE__)->Instance == USART2) \
212  { \
213  switch(__HAL_RCC_GET_USART2_SOURCE()) \
214  { \
215  case RCC_USART2CLKSOURCE_PCLK1: \
216  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
217  break; \
218  case RCC_USART2CLKSOURCE_HSI: \
219  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
220  break; \
221  case RCC_USART2CLKSOURCE_SYSCLK: \
222  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
223  break; \
224  case RCC_USART2CLKSOURCE_LSE: \
225  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
226  break; \
227  default: \
228  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
229  break; \
230  } \
231  } \
232  else if((__HANDLE__)->Instance == USART3) \
233  { \
234  switch(__HAL_RCC_GET_USART3_SOURCE()) \
235  { \
236  case RCC_USART3CLKSOURCE_PCLK1: \
237  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
238  break; \
239  case RCC_USART3CLKSOURCE_HSI: \
240  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
241  break; \
242  case RCC_USART3CLKSOURCE_SYSCLK: \
243  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
244  break; \
245  case RCC_USART3CLKSOURCE_LSE: \
246  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
247  break; \
248  default: \
249  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
250  break; \
251  } \
252  } \
253  else \
254  { \
255  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
256  } \
257  } while(0)
258 #elif defined (STM32L432xx) || defined (STM32L442xx)
259 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
260  do { \
261  if((__HANDLE__)->Instance == USART1) \
262  { \
263  switch(__HAL_RCC_GET_USART1_SOURCE()) \
264  { \
265  case RCC_USART1CLKSOURCE_PCLK2: \
266  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2; \
267  break; \
268  case RCC_USART1CLKSOURCE_HSI: \
269  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
270  break; \
271  case RCC_USART1CLKSOURCE_SYSCLK: \
272  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
273  break; \
274  case RCC_USART1CLKSOURCE_LSE: \
275  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
276  break; \
277  default: \
278  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
279  break; \
280  } \
281  } \
282  else if((__HANDLE__)->Instance == USART2) \
283  { \
284  switch(__HAL_RCC_GET_USART2_SOURCE()) \
285  { \
286  case RCC_USART2CLKSOURCE_PCLK1: \
287  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
288  break; \
289  case RCC_USART2CLKSOURCE_HSI: \
290  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
291  break; \
292  case RCC_USART2CLKSOURCE_SYSCLK: \
293  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
294  break; \
295  case RCC_USART2CLKSOURCE_LSE: \
296  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
297  break; \
298  default: \
299  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
300  break; \
301  } \
302  } \
303  else \
304  { \
305  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
306  } \
307  } while(0)
308 #elif defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx)
309 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
310  do { \
311  if((__HANDLE__)->Instance == USART1) \
312  { \
313  switch(__HAL_RCC_GET_USART1_SOURCE()) \
314  { \
315  case RCC_USART1CLKSOURCE_PCLK2: \
316  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2; \
317  break; \
318  case RCC_USART1CLKSOURCE_HSI: \
319  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
320  break; \
321  case RCC_USART1CLKSOURCE_SYSCLK: \
322  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
323  break; \
324  case RCC_USART1CLKSOURCE_LSE: \
325  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
326  break; \
327  default: \
328  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
329  break; \
330  } \
331  } \
332  else if((__HANDLE__)->Instance == USART2) \
333  { \
334  switch(__HAL_RCC_GET_USART2_SOURCE()) \
335  { \
336  case RCC_USART2CLKSOURCE_PCLK1: \
337  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
338  break; \
339  case RCC_USART2CLKSOURCE_HSI: \
340  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
341  break; \
342  case RCC_USART2CLKSOURCE_SYSCLK: \
343  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
344  break; \
345  case RCC_USART2CLKSOURCE_LSE: \
346  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
347  break; \
348  default: \
349  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
350  break; \
351  } \
352  } \
353  else if((__HANDLE__)->Instance == USART3) \
354  { \
355  switch(__HAL_RCC_GET_USART3_SOURCE()) \
356  { \
357  case RCC_USART3CLKSOURCE_PCLK1: \
358  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
359  break; \
360  case RCC_USART3CLKSOURCE_HSI: \
361  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
362  break; \
363  case RCC_USART3CLKSOURCE_SYSCLK: \
364  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
365  break; \
366  case RCC_USART3CLKSOURCE_LSE: \
367  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
368  break; \
369  default: \
370  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
371  break; \
372  } \
373  } \
374  else if((__HANDLE__)->Instance == UART4) \
375  { \
376  switch(__HAL_RCC_GET_UART4_SOURCE()) \
377  { \
378  case RCC_UART4CLKSOURCE_PCLK1: \
379  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
380  break; \
381  case RCC_UART4CLKSOURCE_HSI: \
382  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
383  break; \
384  case RCC_UART4CLKSOURCE_SYSCLK: \
385  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
386  break; \
387  case RCC_UART4CLKSOURCE_LSE: \
388  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
389  break; \
390  default: \
391  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
392  break; \
393  } \
394  } \
395  else \
396  { \
397  (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
398  } \
399  } while(0)
400 #endif /* STM32L471xx || STM32L475xx || STM32L476xx || STM32L485xx || STM32L486xx ||
401  * STM32L496xx || STM32L4A6xx ||
402  * STM32L4R5xx || STM32L4R7xx || STM32L4R9xx || STM32L4S5xx || STM32L4S7xx || STM32L4S9xx
403  */
404 
410 #define IRDA_MASK_COMPUTATION(__HANDLE__) \
411  do { \
412  if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_9B) \
413  { \
414  if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
415  { \
416  (__HANDLE__)->Mask = 0x01FFU ; \
417  } \
418  else \
419  { \
420  (__HANDLE__)->Mask = 0x00FFU ; \
421  } \
422  } \
423  else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_8B) \
424  { \
425  if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
426  { \
427  (__HANDLE__)->Mask = 0x00FFU ; \
428  } \
429  else \
430  { \
431  (__HANDLE__)->Mask = 0x007FU ; \
432  } \
433  } \
434  else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_7B) \
435  { \
436  if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
437  { \
438  (__HANDLE__)->Mask = 0x007FU ; \
439  } \
440  else \
441  { \
442  (__HANDLE__)->Mask = 0x003FU ; \
443  } \
444  } \
445  else \
446  { \
447  (__HANDLE__)->Mask = 0x0000U; \
448  } \
449  } while(0U)
450 
455 #define IS_IRDA_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == IRDA_WORDLENGTH_7B) || \
456  ((__LENGTH__) == IRDA_WORDLENGTH_8B) || \
457  ((__LENGTH__) == IRDA_WORDLENGTH_9B))
458 
462 /* Exported functions --------------------------------------------------------*/
463 
472 #ifdef __cplusplus
473 }
474 #endif
475 
476 #endif /* STM32L4xx_HAL_IRDA_EX_H */
477 
478 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
This file contains HAL common defines, enumeration, macros and structures definitions.