|
STM32G474xx HAL 用户手册
|
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