STM32G474xx HAL 用户手册
stm32g4xx_hal_irda_ex.h
跳转到此文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_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) 2019 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 STM32G4xx_HAL_IRDA_EX_H
00021 #define STM32G4xx_HAL_IRDA_EX_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32g4xx_hal_def.h"
00029 
00030 /** @addtogroup STM32G4xx_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(UART5) && !defined(USART3)
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_PCLK2:                        \
00080           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2;          \
00081           break;                                               \
00082         case RCC_USART1CLKSOURCE_HSI:                          \
00083           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;            \
00084           break;                                               \
00085         case RCC_USART1CLKSOURCE_SYSCLK:                       \
00086           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;         \
00087           break;                                               \
00088         case RCC_USART1CLKSOURCE_LSE:                          \
00089           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;            \
00090           break;                                               \
00091         default:                                               \
00092           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;      \
00093           break;                                               \
00094       }                                                        \
00095     }                                                          \
00096     else if((__HANDLE__)->Instance == USART2)                  \
00097     {                                                          \
00098       switch(__HAL_RCC_GET_USART2_SOURCE())                    \
00099       {                                                        \
00100         case RCC_USART2CLKSOURCE_PCLK1:                        \
00101           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;          \
00102           break;                                               \
00103         case RCC_USART2CLKSOURCE_HSI:                          \
00104           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;            \
00105           break;                                               \
00106         case RCC_USART2CLKSOURCE_SYSCLK:                       \
00107           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;         \
00108           break;                                               \
00109         case RCC_USART2CLKSOURCE_LSE:                          \
00110           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;            \
00111           break;                                               \
00112         default:                                               \
00113           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;      \
00114           break;                                               \
00115       }                                                        \
00116     }                                                          \
00117     else if((__HANDLE__)->Instance == UART4)                   \
00118     {                                                          \
00119       switch(__HAL_RCC_GET_UART4_SOURCE())                     \
00120       {                                                        \
00121         case RCC_UART4CLKSOURCE_PCLK1:                         \
00122           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;          \
00123           break;                                               \
00124         case RCC_UART4CLKSOURCE_HSI:                           \
00125           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;            \
00126           break;                                               \
00127         case RCC_UART4CLKSOURCE_SYSCLK:                        \
00128           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;         \
00129           break;                                               \
00130         case RCC_UART4CLKSOURCE_LSE:                           \
00131           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;            \
00132           break;                                               \
00133         default:                                               \
00134           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;      \
00135           break;                                               \
00136       }                                                        \
00137     }                                                          \
00138     else if((__HANDLE__)->Instance == UART5)                   \
00139     {                                                          \
00140       switch(__HAL_RCC_GET_UART5_SOURCE())                     \
00141       {                                                        \
00142         case RCC_UART5CLKSOURCE_PCLK1:                         \
00143           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;          \
00144           break;                                               \
00145         case RCC_UART5CLKSOURCE_HSI:                           \
00146           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;            \
00147           break;                                               \
00148         case RCC_UART5CLKSOURCE_SYSCLK:                        \
00149           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;         \
00150           break;                                               \
00151         case RCC_UART5CLKSOURCE_LSE:                           \
00152           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;            \
00153           break;                                               \
00154         default:                                               \
00155           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;      \
00156           break;                                               \
00157       }                                                        \
00158     }                                                          \
00159     else                                                       \
00160     {                                                          \
00161       (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;          \
00162     }                                                          \
00163   } while(0U)
00164 #elif defined(UART5) && defined(USART3)
00165 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__)        \
00166   do {                                                         \
00167     if((__HANDLE__)->Instance == USART1)                       \
00168     {                                                          \
00169       switch(__HAL_RCC_GET_USART1_SOURCE())                    \
00170       {                                                        \
00171         case RCC_USART1CLKSOURCE_PCLK2:                        \
00172           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2;          \
00173           break;                                               \
00174         case RCC_USART1CLKSOURCE_HSI:                          \
00175           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;            \
00176           break;                                               \
00177         case RCC_USART1CLKSOURCE_SYSCLK:                       \
00178           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK;         \
00179           break;                                               \
00180         case RCC_USART1CLKSOURCE_LSE:                          \
00181           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE;            \
00182           break;                                               \
00183         default:                                               \
00184           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED;      \
00185           break;                                               \
00186       }                                                        \
00187     }                                                          \
00188     else if((__HANDLE__)->Instance == USART2)                  \
00189     {                                                          \
00190       switch(__HAL_RCC_GET_USART2_SOURCE())                    \
00191       {                                                        \
00192         case RCC_USART2CLKSOURCE_PCLK1:                        \
00193           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1;          \
00194           break;                                               \
00195         case RCC_USART2CLKSOURCE_HSI:                          \
00196           (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI;            \
00197           break;                                               \
00198         case RCC_USART2CLKSOURCE_SYSCLK:                       \
00199           (__CLOCKSOURCE__) = IRDA