STM32H735xx HAL User Manual
stm32h7xx_hal_irda_ex.h
Go to the documentation of this file.
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