The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /**
AnnaBridge 171:3a7713b1edbc 2 ******************************************************************************
AnnaBridge 171:3a7713b1edbc 3 * @file stm32f0xx_hal_irda_ex.h
AnnaBridge 171:3a7713b1edbc 4 * @author MCD Application Team
AnnaBridge 171:3a7713b1edbc 5 * @brief Header file of IRDA HAL Extended module.
AnnaBridge 171:3a7713b1edbc 6 ******************************************************************************
AnnaBridge 171:3a7713b1edbc 7 * @attention
AnnaBridge 171:3a7713b1edbc 8 *
AnnaBridge 171:3a7713b1edbc 9 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
AnnaBridge 171:3a7713b1edbc 10 *
AnnaBridge 171:3a7713b1edbc 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 171:3a7713b1edbc 12 * are permitted provided that the following conditions are met:
AnnaBridge 171:3a7713b1edbc 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 171:3a7713b1edbc 14 * this list of conditions and the following disclaimer.
AnnaBridge 171:3a7713b1edbc 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 171:3a7713b1edbc 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 171:3a7713b1edbc 17 * and/or other materials provided with the distribution.
AnnaBridge 171:3a7713b1edbc 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 171:3a7713b1edbc 19 * may be used to endorse or promote products derived from this software
AnnaBridge 171:3a7713b1edbc 20 * without specific prior written permission.
AnnaBridge 171:3a7713b1edbc 21 *
AnnaBridge 171:3a7713b1edbc 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 171:3a7713b1edbc 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 171:3a7713b1edbc 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 171:3a7713b1edbc 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 171:3a7713b1edbc 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 171:3a7713b1edbc 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 171:3a7713b1edbc 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 171:3a7713b1edbc 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 171:3a7713b1edbc 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 171:3a7713b1edbc 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 171:3a7713b1edbc 32 *
AnnaBridge 171:3a7713b1edbc 33 ******************************************************************************
AnnaBridge 171:3a7713b1edbc 34 */
AnnaBridge 171:3a7713b1edbc 35
AnnaBridge 171:3a7713b1edbc 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 171:3a7713b1edbc 37 #ifndef __STM32F0xx_HAL_IRDA_EX_H
AnnaBridge 171:3a7713b1edbc 38 #define __STM32F0xx_HAL_IRDA_EX_H
AnnaBridge 171:3a7713b1edbc 39
AnnaBridge 171:3a7713b1edbc 40 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 41 extern "C" {
AnnaBridge 171:3a7713b1edbc 42 #endif
AnnaBridge 171:3a7713b1edbc 43
AnnaBridge 171:3a7713b1edbc 44 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
AnnaBridge 171:3a7713b1edbc 45
AnnaBridge 171:3a7713b1edbc 46 /* Includes ------------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 47 #include "stm32f0xx_hal_def.h"
AnnaBridge 171:3a7713b1edbc 48
AnnaBridge 171:3a7713b1edbc 49 /** @addtogroup STM32F0xx_HAL_Driver
AnnaBridge 171:3a7713b1edbc 50 * @{
AnnaBridge 171:3a7713b1edbc 51 */
AnnaBridge 171:3a7713b1edbc 52
AnnaBridge 171:3a7713b1edbc 53 /** @addtogroup IRDAEx
AnnaBridge 171:3a7713b1edbc 54 * @{
AnnaBridge 171:3a7713b1edbc 55 */
AnnaBridge 171:3a7713b1edbc 56
AnnaBridge 171:3a7713b1edbc 57 /* Exported types ------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 58 /* Exported constants --------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 59 /** @defgroup IRDAEx_Exported_Constants IRDAEx Exported Constants
AnnaBridge 171:3a7713b1edbc 60 * @{
AnnaBridge 171:3a7713b1edbc 61 */
AnnaBridge 171:3a7713b1edbc 62
AnnaBridge 171:3a7713b1edbc 63 /** @defgroup IRDAEx_Word_Length IRDA Word Length
AnnaBridge 171:3a7713b1edbc 64 * @{
AnnaBridge 171:3a7713b1edbc 65 */
AnnaBridge 171:3a7713b1edbc 66 #if defined (STM32F042x6) || defined (STM32F048xx) || \
AnnaBridge 171:3a7713b1edbc 67 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
AnnaBridge 171:3a7713b1edbc 68 defined (STM32F091xC) || defined (STM32F098xx)
AnnaBridge 171:3a7713b1edbc 69 #define IRDA_WORDLENGTH_7B ((uint32_t)USART_CR1_M1) /*!< 7-bit long frame */
AnnaBridge 171:3a7713b1edbc 70 #define IRDA_WORDLENGTH_8B (0x00000000U) /*!< 8-bit long frame */
AnnaBridge 171:3a7713b1edbc 71 #define IRDA_WORDLENGTH_9B ((uint32_t)USART_CR1_M0) /*!< 9-bit long frame */
AnnaBridge 171:3a7713b1edbc 72 #else
AnnaBridge 171:3a7713b1edbc 73 #define IRDA_WORDLENGTH_8B (0x00000000U) /*!< 8-bit long frame */
AnnaBridge 171:3a7713b1edbc 74 #define IRDA_WORDLENGTH_9B ((uint32_t)USART_CR1_M) /*!< 9-bit long frame */
AnnaBridge 171:3a7713b1edbc 75 #endif /* defined (STM32F042x6) || defined (STM32F048xx) || \
AnnaBridge 171:3a7713b1edbc 76 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
AnnaBridge 171:3a7713b1edbc 77 defined (STM32F091xC) || defined (STM32F098xx)*/
AnnaBridge 171:3a7713b1edbc 78 /**
AnnaBridge 171:3a7713b1edbc 79 * @}
AnnaBridge 171:3a7713b1edbc 80 */
AnnaBridge 171:3a7713b1edbc 81
AnnaBridge 171:3a7713b1edbc 82 /**
AnnaBridge 171:3a7713b1edbc 83 * @}
AnnaBridge 171:3a7713b1edbc 84 */
AnnaBridge 171:3a7713b1edbc 85
AnnaBridge 171:3a7713b1edbc 86 /* Exported macros -----------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 87 /* Exported functions --------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 88
AnnaBridge 171:3a7713b1edbc 89 /* Private macros ------------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 90
AnnaBridge 171:3a7713b1edbc 91 /** @defgroup IRDAEx_Private_Macros IRDAEx Private Macros
AnnaBridge 171:3a7713b1edbc 92 * @{
AnnaBridge 171:3a7713b1edbc 93 */
AnnaBridge 171:3a7713b1edbc 94
AnnaBridge 171:3a7713b1edbc 95 /** @brief Report the IRDA clock source.
AnnaBridge 171:3a7713b1edbc 96 * @param __HANDLE__ specifies the IRDA Handle.
AnnaBridge 171:3a7713b1edbc 97 * @param __CLOCKSOURCE__ output variable.
AnnaBridge 171:3a7713b1edbc 98 * @retval IRDA clocking source, written in __CLOCKSOURCE__.
AnnaBridge 171:3a7713b1edbc 99 */
AnnaBridge 171:3a7713b1edbc 100
AnnaBridge 171:3a7713b1edbc 101 #if defined(STM32F031x6) || defined(STM32F038xx)
AnnaBridge 171:3a7713b1edbc 102 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
AnnaBridge 171:3a7713b1edbc 103 do { \
AnnaBridge 171:3a7713b1edbc 104 switch(__HAL_RCC_GET_USART1_SOURCE()) \
AnnaBridge 171:3a7713b1edbc 105 { \
AnnaBridge 171:3a7713b1edbc 106 case RCC_USART1CLKSOURCE_PCLK1: \
AnnaBridge 171:3a7713b1edbc 107 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 108 break; \
AnnaBridge 171:3a7713b1edbc 109 case RCC_USART1CLKSOURCE_HSI: \
AnnaBridge 171:3a7713b1edbc 110 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
AnnaBridge 171:3a7713b1edbc 111 break; \
AnnaBridge 171:3a7713b1edbc 112 case RCC_USART1CLKSOURCE_SYSCLK: \
AnnaBridge 171:3a7713b1edbc 113 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
AnnaBridge 171:3a7713b1edbc 114 break; \
AnnaBridge 171:3a7713b1edbc 115 case RCC_USART1CLKSOURCE_LSE: \
AnnaBridge 171:3a7713b1edbc 116 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
AnnaBridge 171:3a7713b1edbc 117 break; \
AnnaBridge 171:3a7713b1edbc 118 default: \
AnnaBridge 171:3a7713b1edbc 119 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 171:3a7713b1edbc 120 break; \
AnnaBridge 171:3a7713b1edbc 121 } \
AnnaBridge 171:3a7713b1edbc 122 } while(0)
AnnaBridge 171:3a7713b1edbc 123 #elif defined (STM32F042x6) || defined (STM32F048xx) || \
AnnaBridge 171:3a7713b1edbc 124 defined (STM32F051x8) || defined (STM32F058xx)
AnnaBridge 171:3a7713b1edbc 125 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
AnnaBridge 171:3a7713b1edbc 126 do { \
AnnaBridge 171:3a7713b1edbc 127 if((__HANDLE__)->Instance == USART1) \
AnnaBridge 171:3a7713b1edbc 128 { \
AnnaBridge 171:3a7713b1edbc 129 switch(__HAL_RCC_GET_USART1_SOURCE()) \
AnnaBridge 171:3a7713b1edbc 130 { \
AnnaBridge 171:3a7713b1edbc 131 case RCC_USART1CLKSOURCE_PCLK1: \
AnnaBridge 171:3a7713b1edbc 132 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 133 break; \
AnnaBridge 171:3a7713b1edbc 134 case RCC_USART1CLKSOURCE_HSI: \
AnnaBridge 171:3a7713b1edbc 135 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
AnnaBridge 171:3a7713b1edbc 136 break; \
AnnaBridge 171:3a7713b1edbc 137 case RCC_USART1CLKSOURCE_SYSCLK: \
AnnaBridge 171:3a7713b1edbc 138 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
AnnaBridge 171:3a7713b1edbc 139 break; \
AnnaBridge 171:3a7713b1edbc 140 case RCC_USART1CLKSOURCE_LSE: \
AnnaBridge 171:3a7713b1edbc 141 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
AnnaBridge 171:3a7713b1edbc 142 break; \
AnnaBridge 171:3a7713b1edbc 143 default: \
AnnaBridge 171:3a7713b1edbc 144 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 171:3a7713b1edbc 145 break; \
AnnaBridge 171:3a7713b1edbc 146 } \
AnnaBridge 171:3a7713b1edbc 147 } \
AnnaBridge 171:3a7713b1edbc 148 else if((__HANDLE__)->Instance == USART2) \
AnnaBridge 171:3a7713b1edbc 149 { \
AnnaBridge 171:3a7713b1edbc 150 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 151 } \
AnnaBridge 171:3a7713b1edbc 152 else \
AnnaBridge 171:3a7713b1edbc 153 { \
AnnaBridge 171:3a7713b1edbc 154 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 171:3a7713b1edbc 155 } \
AnnaBridge 171:3a7713b1edbc 156 } while(0)
AnnaBridge 171:3a7713b1edbc 157 #elif defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx)
AnnaBridge 171:3a7713b1edbc 158 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
AnnaBridge 171:3a7713b1edbc 159 do { \
AnnaBridge 171:3a7713b1edbc 160 if((__HANDLE__)->Instance == USART1) \
AnnaBridge 171:3a7713b1edbc 161 { \
AnnaBridge 171:3a7713b1edbc 162 switch(__HAL_RCC_GET_USART1_SOURCE()) \
AnnaBridge 171:3a7713b1edbc 163 { \
AnnaBridge 171:3a7713b1edbc 164 case RCC_USART1CLKSOURCE_PCLK1: \
AnnaBridge 171:3a7713b1edbc 165 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 166 break; \
AnnaBridge 171:3a7713b1edbc 167 case RCC_USART1CLKSOURCE_HSI: \
AnnaBridge 171:3a7713b1edbc 168 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
AnnaBridge 171:3a7713b1edbc 169 break; \
AnnaBridge 171:3a7713b1edbc 170 case RCC_USART1CLKSOURCE_SYSCLK: \
AnnaBridge 171:3a7713b1edbc 171 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
AnnaBridge 171:3a7713b1edbc 172 break; \
AnnaBridge 171:3a7713b1edbc 173 case RCC_USART1CLKSOURCE_LSE: \
AnnaBridge 171:3a7713b1edbc 174 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
AnnaBridge 171:3a7713b1edbc 175 break; \
AnnaBridge 171:3a7713b1edbc 176 default: \
AnnaBridge 171:3a7713b1edbc 177 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 171:3a7713b1edbc 178 break; \
AnnaBridge 171:3a7713b1edbc 179 } \
AnnaBridge 171:3a7713b1edbc 180 } \
AnnaBridge 171:3a7713b1edbc 181 else if((__HANDLE__)->Instance == USART2) \
AnnaBridge 171:3a7713b1edbc 182 { \
AnnaBridge 171:3a7713b1edbc 183 switch(__HAL_RCC_GET_USART2_SOURCE()) \
AnnaBridge 171:3a7713b1edbc 184 { \
AnnaBridge 171:3a7713b1edbc 185 case RCC_USART2CLKSOURCE_PCLK1: \
AnnaBridge 171:3a7713b1edbc 186 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 187 break; \
AnnaBridge 171:3a7713b1edbc 188 case RCC_USART2CLKSOURCE_HSI: \
AnnaBridge 171:3a7713b1edbc 189 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
AnnaBridge 171:3a7713b1edbc 190 break; \
AnnaBridge 171:3a7713b1edbc 191 case RCC_USART2CLKSOURCE_SYSCLK: \
AnnaBridge 171:3a7713b1edbc 192 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
AnnaBridge 171:3a7713b1edbc 193 break; \
AnnaBridge 171:3a7713b1edbc 194 case RCC_USART2CLKSOURCE_LSE: \
AnnaBridge 171:3a7713b1edbc 195 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
AnnaBridge 171:3a7713b1edbc 196 break; \
AnnaBridge 171:3a7713b1edbc 197 default: \
AnnaBridge 171:3a7713b1edbc 198 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 171:3a7713b1edbc 199 break; \
AnnaBridge 171:3a7713b1edbc 200 } \
AnnaBridge 171:3a7713b1edbc 201 } \
AnnaBridge 171:3a7713b1edbc 202 else if((__HANDLE__)->Instance == USART3) \
AnnaBridge 171:3a7713b1edbc 203 { \
AnnaBridge 171:3a7713b1edbc 204 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 205 } \
AnnaBridge 171:3a7713b1edbc 206 else if((__HANDLE__)->Instance == USART4) \
AnnaBridge 171:3a7713b1edbc 207 { \
AnnaBridge 171:3a7713b1edbc 208 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 209 } \
AnnaBridge 171:3a7713b1edbc 210 else \
AnnaBridge 171:3a7713b1edbc 211 { \
AnnaBridge 171:3a7713b1edbc 212 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 171:3a7713b1edbc 213 } \
AnnaBridge 171:3a7713b1edbc 214 } while(0)
AnnaBridge 171:3a7713b1edbc 215 #elif defined(STM32F091xC) || defined(STM32F098xx)
AnnaBridge 171:3a7713b1edbc 216 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
AnnaBridge 171:3a7713b1edbc 217 do { \
AnnaBridge 171:3a7713b1edbc 218 if((__HANDLE__)->Instance == USART1) \
AnnaBridge 171:3a7713b1edbc 219 { \
AnnaBridge 171:3a7713b1edbc 220 switch(__HAL_RCC_GET_USART1_SOURCE()) \
AnnaBridge 171:3a7713b1edbc 221 { \
AnnaBridge 171:3a7713b1edbc 222 case RCC_USART1CLKSOURCE_PCLK1: \
AnnaBridge 171:3a7713b1edbc 223 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 224 break; \
AnnaBridge 171:3a7713b1edbc 225 case RCC_USART1CLKSOURCE_HSI: \
AnnaBridge 171:3a7713b1edbc 226 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
AnnaBridge 171:3a7713b1edbc 227 break; \
AnnaBridge 171:3a7713b1edbc 228 case RCC_USART1CLKSOURCE_SYSCLK: \
AnnaBridge 171:3a7713b1edbc 229 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
AnnaBridge 171:3a7713b1edbc 230 break; \
AnnaBridge 171:3a7713b1edbc 231 case RCC_USART1CLKSOURCE_LSE: \
AnnaBridge 171:3a7713b1edbc 232 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
AnnaBridge 171:3a7713b1edbc 233 break; \
AnnaBridge 171:3a7713b1edbc 234 default: \
AnnaBridge 171:3a7713b1edbc 235 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 171:3a7713b1edbc 236 break; \
AnnaBridge 171:3a7713b1edbc 237 } \
AnnaBridge 171:3a7713b1edbc 238 } \
AnnaBridge 171:3a7713b1edbc 239 else if((__HANDLE__)->Instance == USART2) \
AnnaBridge 171:3a7713b1edbc 240 { \
AnnaBridge 171:3a7713b1edbc 241 switch(__HAL_RCC_GET_USART2_SOURCE()) \
AnnaBridge 171:3a7713b1edbc 242 { \
AnnaBridge 171:3a7713b1edbc 243 case RCC_USART2CLKSOURCE_PCLK1: \
AnnaBridge 171:3a7713b1edbc 244 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 245 break; \
AnnaBridge 171:3a7713b1edbc 246 case RCC_USART2CLKSOURCE_HSI: \
AnnaBridge 171:3a7713b1edbc 247 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
AnnaBridge 171:3a7713b1edbc 248 break; \
AnnaBridge 171:3a7713b1edbc 249 case RCC_USART2CLKSOURCE_SYSCLK: \
AnnaBridge 171:3a7713b1edbc 250 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
AnnaBridge 171:3a7713b1edbc 251 break; \
AnnaBridge 171:3a7713b1edbc 252 case RCC_USART2CLKSOURCE_LSE: \
AnnaBridge 171:3a7713b1edbc 253 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
AnnaBridge 171:3a7713b1edbc 254 break; \
AnnaBridge 171:3a7713b1edbc 255 default: \
AnnaBridge 171:3a7713b1edbc 256 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 171:3a7713b1edbc 257 break; \
AnnaBridge 171:3a7713b1edbc 258 } \
AnnaBridge 171:3a7713b1edbc 259 } \
AnnaBridge 171:3a7713b1edbc 260 else if((__HANDLE__)->Instance == USART3) \
AnnaBridge 171:3a7713b1edbc 261 { \
AnnaBridge 171:3a7713b1edbc 262 switch(__HAL_RCC_GET_USART3_SOURCE()) \
AnnaBridge 171:3a7713b1edbc 263 { \
AnnaBridge 171:3a7713b1edbc 264 case RCC_USART3CLKSOURCE_PCLK1: \
AnnaBridge 171:3a7713b1edbc 265 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 266 break; \
AnnaBridge 171:3a7713b1edbc 267 case RCC_USART3CLKSOURCE_HSI: \
AnnaBridge 171:3a7713b1edbc 268 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
AnnaBridge 171:3a7713b1edbc 269 break; \
AnnaBridge 171:3a7713b1edbc 270 case RCC_USART3CLKSOURCE_SYSCLK: \
AnnaBridge 171:3a7713b1edbc 271 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
AnnaBridge 171:3a7713b1edbc 272 break; \
AnnaBridge 171:3a7713b1edbc 273 case RCC_USART3CLKSOURCE_LSE: \
AnnaBridge 171:3a7713b1edbc 274 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
AnnaBridge 171:3a7713b1edbc 275 break; \
AnnaBridge 171:3a7713b1edbc 276 default: \
AnnaBridge 171:3a7713b1edbc 277 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 171:3a7713b1edbc 278 break; \
AnnaBridge 171:3a7713b1edbc 279 } \
AnnaBridge 171:3a7713b1edbc 280 } \
AnnaBridge 171:3a7713b1edbc 281 else if((__HANDLE__)->Instance == USART4) \
AnnaBridge 171:3a7713b1edbc 282 { \
AnnaBridge 171:3a7713b1edbc 283 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 284 } \
AnnaBridge 171:3a7713b1edbc 285 else if((__HANDLE__)->Instance == USART5) \
AnnaBridge 171:3a7713b1edbc 286 { \
AnnaBridge 171:3a7713b1edbc 287 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 288 } \
AnnaBridge 171:3a7713b1edbc 289 else if((__HANDLE__)->Instance == USART6) \
AnnaBridge 171:3a7713b1edbc 290 { \
AnnaBridge 171:3a7713b1edbc 291 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 292 } \
AnnaBridge 171:3a7713b1edbc 293 else if((__HANDLE__)->Instance == USART7) \
AnnaBridge 171:3a7713b1edbc 294 { \
AnnaBridge 171:3a7713b1edbc 295 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 296 } \
AnnaBridge 171:3a7713b1edbc 297 else if((__HANDLE__)->Instance == USART8) \
AnnaBridge 171:3a7713b1edbc 298 { \
AnnaBridge 171:3a7713b1edbc 299 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
AnnaBridge 171:3a7713b1edbc 300 } \
AnnaBridge 171:3a7713b1edbc 301 else \
AnnaBridge 171:3a7713b1edbc 302 { \
AnnaBridge 171:3a7713b1edbc 303 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_UNDEFINED; \
AnnaBridge 171:3a7713b1edbc 304 } \
AnnaBridge 171:3a7713b1edbc 305 } while(0)
AnnaBridge 171:3a7713b1edbc 306
AnnaBridge 171:3a7713b1edbc 307 #endif /* defined(STM32F031x6) || defined(STM32F038xx) */
AnnaBridge 171:3a7713b1edbc 308
AnnaBridge 171:3a7713b1edbc 309
AnnaBridge 171:3a7713b1edbc 310 /** @brief Compute the mask to apply to retrieve the received data
AnnaBridge 171:3a7713b1edbc 311 * according to the word length and to the parity bits activation.
AnnaBridge 171:3a7713b1edbc 312 * @note If PCE = 1, the parity bit is not included in the data extracted
AnnaBridge 171:3a7713b1edbc 313 * by the reception API().
AnnaBridge 171:3a7713b1edbc 314 * This masking operation is not carried out in the case of
AnnaBridge 171:3a7713b1edbc 315 * DMA transfers.
AnnaBridge 171:3a7713b1edbc 316 * @param __HANDLE__ specifies the IRDA Handle.
AnnaBridge 171:3a7713b1edbc 317 * @retval None, the mask to apply to the associated UART RDR register is stored in (__HANDLE__)->Mask field.
AnnaBridge 171:3a7713b1edbc 318 */
AnnaBridge 171:3a7713b1edbc 319 #if defined (STM32F042x6) || defined (STM32F048xx) || \
AnnaBridge 171:3a7713b1edbc 320 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
AnnaBridge 171:3a7713b1edbc 321 defined (STM32F091xC) || defined (STM32F098xx)
AnnaBridge 171:3a7713b1edbc 322 #define IRDA_MASK_COMPUTATION(__HANDLE__) \
AnnaBridge 171:3a7713b1edbc 323 do { \
AnnaBridge 171:3a7713b1edbc 324 if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_9B) \
AnnaBridge 171:3a7713b1edbc 325 { \
AnnaBridge 171:3a7713b1edbc 326 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
AnnaBridge 171:3a7713b1edbc 327 { \
AnnaBridge 171:3a7713b1edbc 328 (__HANDLE__)->Mask = 0x01FFU ; \
AnnaBridge 171:3a7713b1edbc 329 } \
AnnaBridge 171:3a7713b1edbc 330 else \
AnnaBridge 171:3a7713b1edbc 331 { \
AnnaBridge 171:3a7713b1edbc 332 (__HANDLE__)->Mask = 0x00FFU ; \
AnnaBridge 171:3a7713b1edbc 333 } \
AnnaBridge 171:3a7713b1edbc 334 } \
AnnaBridge 171:3a7713b1edbc 335 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_8B) \
AnnaBridge 171:3a7713b1edbc 336 { \
AnnaBridge 171:3a7713b1edbc 337 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
AnnaBridge 171:3a7713b1edbc 338 { \
AnnaBridge 171:3a7713b1edbc 339 (__HANDLE__)->Mask = 0x00FFU ; \
AnnaBridge 171:3a7713b1edbc 340 } \
AnnaBridge 171:3a7713b1edbc 341 else \
AnnaBridge 171:3a7713b1edbc 342 { \
AnnaBridge 171:3a7713b1edbc 343 (__HANDLE__)->Mask = 0x007FU ; \
AnnaBridge 171:3a7713b1edbc 344 } \
AnnaBridge 171:3a7713b1edbc 345 } \
AnnaBridge 171:3a7713b1edbc 346 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_7B) \
AnnaBridge 171:3a7713b1edbc 347 { \
AnnaBridge 171:3a7713b1edbc 348 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
AnnaBridge 171:3a7713b1edbc 349 { \
AnnaBridge 171:3a7713b1edbc 350 (__HANDLE__)->Mask = 0x007FU ; \
AnnaBridge 171:3a7713b1edbc 351 } \
AnnaBridge 171:3a7713b1edbc 352 else \
AnnaBridge 171:3a7713b1edbc 353 { \
AnnaBridge 171:3a7713b1edbc 354 (__HANDLE__)->Mask = 0x003FU ; \
AnnaBridge 171:3a7713b1edbc 355 } \
AnnaBridge 171:3a7713b1edbc 356 } \
AnnaBridge 171:3a7713b1edbc 357 } while(0)
AnnaBridge 171:3a7713b1edbc 358 #else
AnnaBridge 171:3a7713b1edbc 359 #define IRDA_MASK_COMPUTATION(__HANDLE__) \
AnnaBridge 171:3a7713b1edbc 360 do { \
AnnaBridge 171:3a7713b1edbc 361 if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_9B) \
AnnaBridge 171:3a7713b1edbc 362 { \
AnnaBridge 171:3a7713b1edbc 363 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
AnnaBridge 171:3a7713b1edbc 364 { \
AnnaBridge 171:3a7713b1edbc 365 (__HANDLE__)->Mask = 0x01FFU ; \
AnnaBridge 171:3a7713b1edbc 366 } \
AnnaBridge 171:3a7713b1edbc 367 else \
AnnaBridge 171:3a7713b1edbc 368 { \
AnnaBridge 171:3a7713b1edbc 369 (__HANDLE__)->Mask = 0x00FFU ; \
AnnaBridge 171:3a7713b1edbc 370 } \
AnnaBridge 171:3a7713b1edbc 371 } \
AnnaBridge 171:3a7713b1edbc 372 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_8B) \
AnnaBridge 171:3a7713b1edbc 373 { \
AnnaBridge 171:3a7713b1edbc 374 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
AnnaBridge 171:3a7713b1edbc 375 { \
AnnaBridge 171:3a7713b1edbc 376 (__HANDLE__)->Mask = 0x00FFU ; \
AnnaBridge 171:3a7713b1edbc 377 } \
AnnaBridge 171:3a7713b1edbc 378 else \
AnnaBridge 171:3a7713b1edbc 379 { \
AnnaBridge 171:3a7713b1edbc 380 (__HANDLE__)->Mask = 0x007FU ; \
AnnaBridge 171:3a7713b1edbc 381 } \
AnnaBridge 171:3a7713b1edbc 382 } \
AnnaBridge 171:3a7713b1edbc 383 } while(0)
AnnaBridge 171:3a7713b1edbc 384 #endif /* defined (STM32F042x6) || defined (STM32F048xx) || \
AnnaBridge 171:3a7713b1edbc 385 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
AnnaBridge 171:3a7713b1edbc 386 defined (STM32F091xC) || defined(STM32F098xx) */
AnnaBridge 171:3a7713b1edbc 387
AnnaBridge 171:3a7713b1edbc 388 /**
AnnaBridge 171:3a7713b1edbc 389 * @brief Ensure that IRDA frame length is valid.
AnnaBridge 171:3a7713b1edbc 390 * @param __LENGTH__ IRDA frame length.
AnnaBridge 171:3a7713b1edbc 391 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)
AnnaBridge 171:3a7713b1edbc 392 */
AnnaBridge 171:3a7713b1edbc 393 #if defined (STM32F042x6) || defined (STM32F048xx) || \
AnnaBridge 171:3a7713b1edbc 394 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
AnnaBridge 171:3a7713b1edbc 395 defined (STM32F091xC) || defined (STM32F098xx)
AnnaBridge 171:3a7713b1edbc 396 #define IS_IRDA_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == IRDA_WORDLENGTH_7B) || \
AnnaBridge 171:3a7713b1edbc 397 ((__LENGTH__) == IRDA_WORDLENGTH_8B) || \
AnnaBridge 171:3a7713b1edbc 398 ((__LENGTH__) == IRDA_WORDLENGTH_9B))
AnnaBridge 171:3a7713b1edbc 399 #else
AnnaBridge 171:3a7713b1edbc 400 #define IS_IRDA_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == IRDA_WORDLENGTH_8B) || \
AnnaBridge 171:3a7713b1edbc 401 ((__LENGTH__) == IRDA_WORDLENGTH_9B))
AnnaBridge 171:3a7713b1edbc 402 #endif /* defined (STM32F042x6) || defined (STM32F048xx) || \
AnnaBridge 171:3a7713b1edbc 403 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
AnnaBridge 171:3a7713b1edbc 404 defined (STM32F091xC) || defined (STM32F098xx)*/
AnnaBridge 171:3a7713b1edbc 405
AnnaBridge 171:3a7713b1edbc 406 /**
AnnaBridge 171:3a7713b1edbc 407 * @}
AnnaBridge 171:3a7713b1edbc 408 */
AnnaBridge 171:3a7713b1edbc 409
AnnaBridge 171:3a7713b1edbc 410 /* Exported functions --------------------------------------------------------*/
AnnaBridge 171:3a7713b1edbc 411
AnnaBridge 171:3a7713b1edbc 412 /**
AnnaBridge 171:3a7713b1edbc 413 * @}
AnnaBridge 171:3a7713b1edbc 414 */
AnnaBridge 171:3a7713b1edbc 415
AnnaBridge 171:3a7713b1edbc 416 /**
AnnaBridge 171:3a7713b1edbc 417 * @}
AnnaBridge 171:3a7713b1edbc 418 */
AnnaBridge 171:3a7713b1edbc 419
AnnaBridge 171:3a7713b1edbc 420 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
AnnaBridge 171:3a7713b1edbc 421
AnnaBridge 171:3a7713b1edbc 422 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 423 }
AnnaBridge 171:3a7713b1edbc 424 #endif
AnnaBridge 171:3a7713b1edbc 425
AnnaBridge 171:3a7713b1edbc 426 #endif /* __STM32F0xx_HAL_IRDA_EX_H */
AnnaBridge 171:3a7713b1edbc 427
AnnaBridge 171:3a7713b1edbc 428 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
AnnaBridge 171:3a7713b1edbc 429