STM32H735xx HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32h7xx_hal_irda_ex.h 00004 * @author MCD Application Team 00005 * @brief Header file of IRDA HAL Extended module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * Copyright (c) 2017 STMicroelectronics. 00010 * All rights reserved. 00011 * 00012 * This software is licensed under terms that can be found in the LICENSE file 00013 * in the root directory of this software component. 00014 * If no LICENSE file comes with this software, it is provided AS-IS. 00015 * 00016 ****************************************************************************** 00017 */ 00018 00019 /* Define to prevent recursive inclusion -------------------------------------*/ 00020 #ifndef STM32H7xx_HAL_IRDA_EX_H 00021 #define STM32H7xx_HAL_IRDA_EX_H 00022 00023 #ifdef __cplusplus 00024 extern "C" { 00025 #endif 00026 00027 /* Includes ------------------------------------------------------------------*/ 00028 #include "stm32h7xx_hal_def.h" 00029 00030 /** @addtogroup STM32H7xx_HAL_Driver 00031 * @{ 00032 */ 00033 00034 /** @defgroup IRDAEx IRDAEx 00035 * @brief IRDA Extended HAL module driver 00036 * @{ 00037 */ 00038 00039 /* Exported types ------------------------------------------------------------*/ 00040 /* Exported constants --------------------------------------------------------*/ 00041 /** @defgroup IRDAEx_Extended_Exported_Constants IRDAEx Extended Exported Constants 00042 * @{ 00043 */ 00044 00045 /** @defgroup IRDAEx_Word_Length IRDAEx Word Length 00046 * @{ 00047 */ 00048 #define IRDA_WORDLENGTH_7B USART_CR1_M1 /*!< 7-bit long frame */ 00049 #define IRDA_WORDLENGTH_8B 0x00000000U /*!< 8-bit long frame */ 00050 #define IRDA_WORDLENGTH_9B USART_CR1_M0 /*!< 9-bit long frame */ 00051 /** 00052 * @} 00053 */ 00054 00055 /** 00056 * @} 00057 */ 00058 00059 /* Exported macros -----------------------------------------------------------*/ 00060 00061 /* Private macros ------------------------------------------------------------*/ 00062 00063 /** @defgroup IRDAEx_Private_Macros IRDAEx Private Macros 00064 * @{ 00065 */ 00066 00067 /** @brief Report the IRDA clock source. 00068 * @param __HANDLE__ specifies the IRDA Handle. 00069 * @param __CLOCKSOURCE__ output variable. 00070 * @retval IRDA clocking source, written in __CLOCKSOURCE__. 00071 */ 00072 #if defined(UART9) && defined(USART10) 00073 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 00074 do { \ 00075 if((__HANDLE__)->Instance == USART1) \ 00076 { \ 00077 switch(__HAL_RCC_GET_USART1_SOURCE()) \ 00078 { \ 00079 case RCC_USART1CLKSOURCE_D2PCLK2: \ 00080 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK2; \ 00081 break; \ 00082 case RCC_USART1CLKSOURCE_PLL2: \ 00083 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00084 break; \ 00085 case RCC_USART1CLKSOURCE_PLL3: \ 00086 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00087 break; \ 00088 case RCC_USART1CLKSOURCE_HSI: \ 00089 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00090 break; \ 00091 case RCC_USART1CLKSOURCE_CSI: \ 00092 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00093 break; \ 00094 case RCC_USART1CLKSOURCE_LSE: \ 00095 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00096 break; \ 00097 default: \ 00098 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00099 break; \ 00100 } \ 00101 } \ 00102 else if((__HANDLE__)->Instance == USART2) \ 00103 { \ 00104 switch(__HAL_RCC_GET_USART2_SOURCE()) \ 00105 { \ 00106 case RCC_USART2CLKSOURCE_D2PCLK1: \ 00107 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00108 break; \ 00109 case RCC_USART2CLKSOURCE_PLL2: \ 00110 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00111 break; \ 00112 case RCC_USART2CLKSOURCE_PLL3: \ 00113 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00114 break; \ 00115 case RCC_USART2CLKSOURCE_HSI: \ 00116 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00117 break; \ 00118 case RCC_USART2CLKSOURCE_CSI: \ 00119 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00120 break; \ 00121 case RCC_USART2CLKSOURCE_LSE: \ 00122 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00123 break; \ 00124 default: \ 00125 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00126 break; \ 00127 } \ 00128 } \ 00129 else if((__HANDLE__)->Instance == USART3) \ 00130 { \ 00131 switch(__HAL_RCC_GET_USART3_SOURCE()) \ 00132 { \ 00133 case RCC_USART3CLKSOURCE_D2PCLK1: \ 00134 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00135 break; \ 00136 case RCC_USART3CLKSOURCE_PLL2: \ 00137 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00138 break; \ 00139 case RCC_USART3CLKSOURCE_PLL3: \ 00140 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00141 break; \ 00142 case RCC_USART3CLKSOURCE_HSI: \ 00143 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00144 break; \ 00145 case RCC_USART3CLKSOURCE_CSI: \ 00146 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00147 break; \ 00148 case RCC_USART3CLKSOURCE_LSE: \ 00149 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00150 break; \ 00151 default: \ 00152 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00153 break; \ 00154 } \ 00155 } \ 00156 else if((__HANDLE__)->Instance == UART4) \ 00157 { \ 00158 switch(__HAL_RCC_GET_UART4_SOURCE()) \ 00159 { \ 00160 case RCC_UART4CLKSOURCE_D2PCLK1: \ 00161 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00162 break; \ 00163 case RCC_UART4CLKSOURCE_PLL2: \ 00164 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00165 break; \ 00166 case RCC_UART4CLKSOURCE_PLL3: \ 00167 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00168 break; \ 00169 case RCC_UART4CLKSOURCE_HSI: \ 00170 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00171 break; \ 00172 case RCC_UART4CLKSOURCE_CSI: \ 00173 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00174 break; \ 00175 case RCC_UART4CLKSOURCE_LSE: \ 00176 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00177 break; \ 00178 default: \ 00179 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00180 break; \ 00181 } \ 00182 } \ 00183 else if ((__HANDLE__)->Instance == UART5) \ 00184 { \ 00185 switch(__HAL_RCC_GET_UART5_SOURCE()) \ 00186 { \ 00187 case RCC_UART5CLKSOURCE_D2PCLK1: \ 00188 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00189 break; \ 00190 case RCC_UART5CLKSOURCE_PLL2: \ 00191 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00192 break; \ 00193 case RCC_UART5CLKSOURCE_PLL3: \ 00194 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00195 break; \ 00196 case RCC_UART5CLKSOURCE_HSI: \ 00197 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00198 break; \ 00199 case RCC_UART5CLKSOURCE_CSI: \ 00200 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00201 break; \ 00202 case RCC_UART5CLKSOURCE_LSE: \ 00203 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00204 break; \ 00205 default: \ 00206 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00207 break; \ 00208 } \ 00209 } \ 00210 else if((__HANDLE__)->Instance == USART6) \ 00211 { \ 00212 switch(__HAL_RCC_GET_USART6_SOURCE()) \ 00213 { \ 00214 case RCC_USART6CLKSOURCE_D2PCLK2: \ 00215 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK2; \ 00216 break; \ 00217 case RCC_USART6CLKSOURCE_PLL2: \ 00218 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00219 break; \ 00220 case RCC_USART6CLKSOURCE_PLL3: \ 00221 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00222 break; \ 00223 case RCC_USART6CLKSOURCE_HSI: \ 00224 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00225 break; \ 00226 case RCC_USART6CLKSOURCE_CSI: \ 00227 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00228 break; \ 00229 case RCC_USART6CLKSOURCE_LSE: \ 00230 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00231 break; \ 00232 default: \ 00233 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00234 break; \ 00235 } \ 00236 } \ 00237 else if((__HANDLE__)->Instance == UART7) \ 00238 { \ 00239 switch(__HAL_RCC_GET_UART7_SOURCE()) \ 00240 { \ 00241 case RCC_UART7CLKSOURCE_D2PCLK1: \ 00242 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00243 break; \ 00244 case RCC_UART7CLKSOURCE_PLL2: \ 00245 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00246 break; \ 00247 case RCC_UART7CLKSOURCE_PLL3: \ 00248 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00249 break; \ 00250 case RCC_UART7CLKSOURCE_HSI: \ 00251 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00252 break; \ 00253 case RCC_UART7CLKSOURCE_CSI: \ 00254 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00255 break; \ 00256 case RCC_UART7CLKSOURCE_LSE: \ 00257 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00258 break; \ 00259 default: \ 00260 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00261 break; \ 00262 } \ 00263 } \ 00264 else if((__HANDLE__)->Instance == UART8) \ 00265 { \ 00266 switch(__HAL_RCC_GET_UART8_SOURCE()) \ 00267 { \ 00268 case RCC_UART8CLKSOURCE_D2PCLK1: \ 00269 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00270 break; \ 00271 case RCC_UART8CLKSOURCE_PLL2: \ 00272 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00273 break; \ 00274 case RCC_UART8CLKSOURCE_PLL3: \ 00275 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00276 break; \ 00277 case RCC_UART8CLKSOURCE_HSI: \ 00278 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00279 break; \ 00280 case RCC_UART8CLKSOURCE_CSI: \ 00281 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00282 break; \ 00283 case RCC_UART8CLKSOURCE_LSE: \ 00284 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00285 break; \ 00286 default: \ 00287 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00288 break; \ 00289 } \ 00290 } \ 00291 else if((__HANDLE__)->Instance == UART9) \ 00292 { \ 00293 switch(__HAL_RCC_GET_UART9_SOURCE()) \ 00294 { \ 00295 case RCC_UART9CLKSOURCE_D2PCLK2: \ 00296 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK2; \ 00297 break; \ 00298 case RCC_UART9CLKSOURCE_PLL2: \ 00299 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00300 break; \ 00301 case RCC_UART9CLKSOURCE_PLL3: \ 00302 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00303 break; \ 00304 case RCC_UART9CLKSOURCE_HSI: \ 00305 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00306 break; \ 00307 case RCC_UART9CLKSOURCE_CSI: \ 00308 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00309 break; \ 00310 case RCC_UART9CLKSOURCE_LSE: \ 00311 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00312 break; \ 00313 default: \ 00314 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00315 break; \ 00316 } \ 00317 } \ 00318 else if((__HANDLE__)->Instance == USART10) \ 00319 { \ 00320 switch(__HAL_RCC_GET_USART10_SOURCE()) \ 00321 { \ 00322 case RCC_USART10CLKSOURCE_D2PCLK2: \ 00323 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK2; \ 00324 break; \ 00325 case RCC_USART10CLKSOURCE_PLL2: \ 00326 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00327 break; \ 00328 case RCC_USART10CLKSOURCE_PLL3: \ 00329 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00330 break; \ 00331 case RCC_USART10CLKSOURCE_HSI: \ 00332 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00333 break; \ 00334 case RCC_USART10CLKSOURCE_CSI: \ 00335 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00336 break; \ 00337 case RCC_USART10CLKSOURCE_LSE: \ 00338 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00339 break; \ 00340 default: \ 00341 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00342 break; \ 00343 } \ 00344 } \ 00345 else \ 00346 { \ 00347 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00348 } \ 00349 } while(0U) 00350 #else 00351 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 00352 do { \ 00353 if((__HANDLE__)->Instance == USART1) \ 00354 { \ 00355 switch(__HAL_RCC_GET_USART1_SOURCE()) \ 00356 { \ 00357 case RCC_USART1CLKSOURCE_D2PCLK2: \ 00358 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK2; \ 00359 break; \ 00360 case RCC_USART1CLKSOURCE_PLL2: \ 00361 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00362 break; \ 00363 case RCC_USART1CLKSOURCE_PLL3: \ 00364 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00365 break; \ 00366 case RCC_USART1CLKSOURCE_HSI: \ 00367 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00368 break; \ 00369 case RCC_USART1CLKSOURCE_CSI: \ 00370 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00371 break; \ 00372 case RCC_USART1CLKSOURCE_LSE: \ 00373 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00374 break; \ 00375 default: \ 00376 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00377 break; \ 00378 } \ 00379 } \ 00380 else if((__HANDLE__)->Instance == USART2) \ 00381 { \ 00382 switch(__HAL_RCC_GET_USART2_SOURCE()) \ 00383 { \ 00384 case RCC_USART2CLKSOURCE_D2PCLK1: \ 00385 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00386 break; \ 00387 case RCC_USART2CLKSOURCE_PLL2: \ 00388 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00389 break; \ 00390 case RCC_USART2CLKSOURCE_PLL3: \ 00391 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00392 break; \ 00393 case RCC_USART2CLKSOURCE_HSI: \ 00394 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00395 break; \ 00396 case RCC_USART2CLKSOURCE_CSI: \ 00397 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00398 break; \ 00399 case RCC_USART2CLKSOURCE_LSE: \ 00400 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00401 break; \ 00402 default: \ 00403 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00404 break; \ 00405 } \ 00406 } \ 00407 else if((__HANDLE__)->Instance == USART3) \ 00408 { \ 00409 switch(__HAL_RCC_GET_USART3_SOURCE()) \ 00410 { \ 00411 case RCC_USART3CLKSOURCE_D2PCLK1: \ 00412 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00413 break; \ 00414 case RCC_USART3CLKSOURCE_PLL2: \ 00415 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00416 break; \ 00417 case RCC_USART3CLKSOURCE_PLL3: \ 00418 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00419 break; \ 00420 case RCC_USART3CLKSOURCE_HSI: \ 00421 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00422 break; \ 00423 case RCC_USART3CLKSOURCE_CSI: \ 00424 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00425 break; \ 00426 case RCC_USART3CLKSOURCE_LSE: \ 00427 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00428 break; \ 00429 default: \ 00430 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00431 break; \ 00432 } \ 00433 } \ 00434 else if((__HANDLE__)->Instance == UART4) \ 00435 { \ 00436 switch(__HAL_RCC_GET_UART4_SOURCE()) \ 00437 { \ 00438 case RCC_UART4CLKSOURCE_D2PCLK1: \ 00439 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00440 break; \ 00441 case RCC_UART4CLKSOURCE_PLL2: \ 00442 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00443 break; \ 00444 case RCC_UART4CLKSOURCE_PLL3: \ 00445 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00446 break; \ 00447 case RCC_UART4CLKSOURCE_HSI: \ 00448 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00449 break; \ 00450 case RCC_UART4CLKSOURCE_CSI: \ 00451 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00452 break; \ 00453 case RCC_UART4CLKSOURCE_LSE: \ 00454 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00455 break; \ 00456 default: \ 00457 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00458 break; \ 00459 } \ 00460 } \ 00461 else if ((__HANDLE__)->Instance == UART5) \ 00462 { \ 00463 switch(__HAL_RCC_GET_UART5_SOURCE()) \ 00464 { \ 00465 case RCC_UART5CLKSOURCE_D2PCLK1: \ 00466 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00467 break; \ 00468 case RCC_UART5CLKSOURCE_PLL2: \ 00469 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00470 break; \ 00471 case RCC_UART5CLKSOURCE_PLL3: \ 00472 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00473 break; \ 00474 case RCC_UART5CLKSOURCE_HSI: \ 00475 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00476 break; \ 00477 case RCC_UART5CLKSOURCE_CSI: \ 00478 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00479 break; \ 00480 case RCC_UART5CLKSOURCE_LSE: \ 00481 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00482 break; \ 00483 default: \ 00484 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00485 break; \ 00486 } \ 00487 } \ 00488 else if((__HANDLE__)->Instance == USART6) \ 00489 { \ 00490 switch(__HAL_RCC_GET_USART6_SOURCE()) \ 00491 { \ 00492 case RCC_USART6CLKSOURCE_D2PCLK2: \ 00493 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK2; \ 00494 break; \ 00495 case RCC_USART6CLKSOURCE_PLL2: \ 00496 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00497 break; \ 00498 case RCC_USART6CLKSOURCE_PLL3: \ 00499 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00500 break; \ 00501 case RCC_USART6CLKSOURCE_HSI: \ 00502 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00503 break; \ 00504 case RCC_USART6CLKSOURCE_CSI: \ 00505 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00506 break; \ 00507 case RCC_USART6CLKSOURCE_LSE: \ 00508 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00509 break; \ 00510 default: \ 00511 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00512 break; \ 00513 } \ 00514 } \ 00515 else if((__HANDLE__)->Instance == UART7) \ 00516 { \ 00517 switch(__HAL_RCC_GET_UART7_SOURCE()) \ 00518 { \ 00519 case RCC_UART7CLKSOURCE_D2PCLK1: \ 00520 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00521 break; \ 00522 case RCC_UART7CLKSOURCE_PLL2: \ 00523 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00524 break; \ 00525 case RCC_UART7CLKSOURCE_PLL3: \ 00526 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00527 break; \ 00528 case RCC_UART7CLKSOURCE_HSI: \ 00529 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00530 break; \ 00531 case RCC_UART7CLKSOURCE_CSI: \ 00532 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00533 break; \ 00534 case RCC_UART7CLKSOURCE_LSE: \ 00535 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00536 break; \ 00537 default: \ 00538 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00539 break; \ 00540 } \ 00541 } \ 00542 else if((__HANDLE__)->Instance == UART8) \ 00543 { \ 00544 switch(__HAL_RCC_GET_UART8_SOURCE()) \ 00545 { \ 00546 case RCC_UART8CLKSOURCE_D2PCLK1: \ 00547 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_D2PCLK1; \ 00548 break; \ 00549 case RCC_UART8CLKSOURCE_PLL2: \ 00550 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL2Q; \ 00551 break; \ 00552 case RCC_UART8CLKSOURCE_PLL3: \ 00553 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PLL3Q; \ 00554 break; \ 00555 case RCC_UART8CLKSOURCE_HSI: \ 00556 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \ 00557 break; \ 00558 case RCC_UART8CLKSOURCE_CSI: \ 00559 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_CSI; \ 00560 break; \ 00561 case RCC_UART8CLKSOURCE_LSE: \ 00562 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \ 00563 break; \ 00564 default: \ 00565 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00566 break; \ 00567 } \ 00568 } \ 00569 else \ 00570 { \ 00571 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \ 00572 } \ 00573 } while(0U) 00574 #endif /* UART9 && USART10 */ 00575 00576 /** @brief Compute the mask to apply to retrieve the received data 00577 * according to the word length and to the parity bits activation. 00578 * @param __HANDLE__ specifies the IRDA Handle. 00579 * @retval None, the mask to apply to the associated UART RDR register is stored in (__HANDLE__)->Mask field. 00580 */ 00581 #define IRDA_MASK_COMPUTATION(__HANDLE__) \ 00582 do { \ 00583 if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_9B) \ 00584 { \ 00585 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \ 00586 { \ 00587 (__HANDLE__)->Mask = 0x01FFU ; \ 00588 } \ 00589 else \ 00590 { \ 00591 (__HANDLE__)->Mask = 0x00FFU ; \ 00592 } \ 00593 } \ 00594 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_8B) \ 00595 { \ 00596 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \ 00597 { \ 00598 (__HANDLE__)->Mask = 0x00FFU ; \ 00599 } \ 00600 else \ 00601 { \ 00602 (__HANDLE__)->Mask = 0x007FU ; \ 00603 } \ 00604 } \ 00605 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_7B) \ 00606 { \ 00607 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \ 00608 { \ 00609 (__HANDLE__)->Mask = 0x007FU ; \ 00610 } \ 00611 else \ 00612 { \ 00613 (__HANDLE__)->Mask = 0x003FU ; \ 00614 } \ 00615 } \ 00616 else \ 00617 { \ 00618 (__HANDLE__)->Mask = 0x0000U; \ 00619 } \ 00620 } while(0U) 00621 00622 /** @brief Ensure that IRDA frame length is valid. 00623 * @param __LENGTH__ IRDA frame length. 00624 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid) 00625 */ 00626 #define IS_IRDA_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == IRDA_WORDLENGTH_7B) || \ 00627 ((__LENGTH__) == IRDA_WORDLENGTH_8B) || \ 00628 ((__LENGTH__) == IRDA_WORDLENGTH_9B)) 00629 /** 00630 * @} 00631 */ 00632 00633 /* Exported functions --------------------------------------------------------*/ 00634 00635 /** 00636 * @} 00637 */ 00638 00639 /** 00640 * @} 00641 */ 00642 00643 #ifdef __cplusplus 00644 } 00645 #endif 00646 00647 #endif /* STM32H7xx_HAL_IRDA_EX_H */ 00648