my fork

Dependents:   Nucleo_blueNRG

Fork of mbed by mbed official

Committer:
Kojto
Date:
Tue Mar 17 14:27:45 2015 +0000
Revision:
96:487b796308b0
Parent:
92:4fc01daae5a5
Release 96 of the mbed library

Changes:
- IAR support for ble boards, lpc, ethernet stack
- RTC - attach function to redirect time functions
- Nucleo F103RB - cube driver
- k20xx - fixes for teensy and k20 platforms in sleep/deepsleep and usb
- STM32L0, Nucleo/Disco L053 - refactoring

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 84:0b3ab51c8877 1 /**
bogdanm 84:0b3ab51c8877 2 ******************************************************************************
bogdanm 84:0b3ab51c8877 3 * @file stm32l0xx_hal_irda_ex.h
bogdanm 84:0b3ab51c8877 4 * @author MCD Application Team
Kojto 96:487b796308b0 5 * @version V1.2.0
Kojto 96:487b796308b0 6 * @date 06-February-2015
bogdanm 84:0b3ab51c8877 7 * @brief Header file of IRDA HAL Extension module.
bogdanm 84:0b3ab51c8877 8 ******************************************************************************
bogdanm 84:0b3ab51c8877 9 * @attention
bogdanm 84:0b3ab51c8877 10 *
bogdanm 84:0b3ab51c8877 11 * <h2><center>&copy; COPYRIGHT(c) 2013 STMicroelectronics</center></h2>
bogdanm 84:0b3ab51c8877 12 *
bogdanm 84:0b3ab51c8877 13 * Redistribution and use in source and binary forms, with or without modification,
bogdanm 84:0b3ab51c8877 14 * are permitted provided that the following conditions are met:
bogdanm 84:0b3ab51c8877 15 * 1. Redistributions of source code must retain the above copyright notice,
bogdanm 84:0b3ab51c8877 16 * this list of conditions and the following disclaimer.
bogdanm 84:0b3ab51c8877 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
bogdanm 84:0b3ab51c8877 18 * this list of conditions and the following disclaimer in the documentation
bogdanm 84:0b3ab51c8877 19 * and/or other materials provided with the distribution.
bogdanm 84:0b3ab51c8877 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
bogdanm 84:0b3ab51c8877 21 * may be used to endorse or promote products derived from this software
bogdanm 84:0b3ab51c8877 22 * without specific prior written permission.
bogdanm 84:0b3ab51c8877 23 *
bogdanm 84:0b3ab51c8877 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
bogdanm 84:0b3ab51c8877 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
bogdanm 84:0b3ab51c8877 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
bogdanm 84:0b3ab51c8877 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
bogdanm 84:0b3ab51c8877 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
bogdanm 84:0b3ab51c8877 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
bogdanm 84:0b3ab51c8877 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
bogdanm 84:0b3ab51c8877 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
bogdanm 84:0b3ab51c8877 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
bogdanm 84:0b3ab51c8877 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
bogdanm 84:0b3ab51c8877 34 *
bogdanm 84:0b3ab51c8877 35 ******************************************************************************
bogdanm 84:0b3ab51c8877 36 */
bogdanm 84:0b3ab51c8877 37
bogdanm 84:0b3ab51c8877 38 /* Define to prevent recursive inclusion -------------------------------------*/
bogdanm 84:0b3ab51c8877 39 #ifndef __STM32L0xx_HAL_IRDA_EX_H
bogdanm 84:0b3ab51c8877 40 #define __STM32L0xx_HAL_IRDA_EX_H
bogdanm 84:0b3ab51c8877 41
bogdanm 84:0b3ab51c8877 42 #ifdef __cplusplus
bogdanm 84:0b3ab51c8877 43 extern "C" {
bogdanm 84:0b3ab51c8877 44 #endif
bogdanm 84:0b3ab51c8877 45
bogdanm 84:0b3ab51c8877 46 /* Includes ------------------------------------------------------------------*/
bogdanm 84:0b3ab51c8877 47 #include "stm32l0xx_hal_def.h"
bogdanm 84:0b3ab51c8877 48
bogdanm 84:0b3ab51c8877 49 /** @addtogroup STM32L0xx_HAL_Driver
bogdanm 84:0b3ab51c8877 50 * @{
bogdanm 84:0b3ab51c8877 51 */
bogdanm 84:0b3ab51c8877 52
bogdanm 84:0b3ab51c8877 53 /** @addtogroup IRDAEx
bogdanm 84:0b3ab51c8877 54 * @{
bogdanm 84:0b3ab51c8877 55 */
bogdanm 84:0b3ab51c8877 56
bogdanm 84:0b3ab51c8877 57 /* Exported types ------------------------------------------------------------*/
bogdanm 84:0b3ab51c8877 58 /* Exported constants --------------------------------------------------------*/
Kojto 96:487b796308b0 59 /** @defgroup IRDAEx_Extended_Exported_Constants IRDA Extended Exported Constants
bogdanm 84:0b3ab51c8877 60 * @{
bogdanm 84:0b3ab51c8877 61 */
bogdanm 84:0b3ab51c8877 62
Kojto 96:487b796308b0 63 /** @defgroup IRDAEx_Word_Length IRDAEx Word length
bogdanm 84:0b3ab51c8877 64 * @{
bogdanm 84:0b3ab51c8877 65 */
bogdanm 84:0b3ab51c8877 66 #define IRDA_WORDLENGTH_7B ((uint32_t)USART_CR1_M_1)
bogdanm 84:0b3ab51c8877 67 #define IRDA_WORDLENGTH_8B ((uint32_t)0x00000000)
bogdanm 84:0b3ab51c8877 68 #define IRDA_WORDLENGTH_9B ((uint32_t)USART_CR1_M_0)
bogdanm 84:0b3ab51c8877 69 #define IS_IRDA_WORD_LENGTH(LENGTH) (((LENGTH) == IRDA_WORDLENGTH_7B) || \
bogdanm 84:0b3ab51c8877 70 ((LENGTH) == IRDA_WORDLENGTH_8B) || \
bogdanm 84:0b3ab51c8877 71 ((LENGTH) == IRDA_WORDLENGTH_9B))
bogdanm 84:0b3ab51c8877 72 /**
bogdanm 84:0b3ab51c8877 73 * @}
bogdanm 84:0b3ab51c8877 74 */
bogdanm 84:0b3ab51c8877 75
bogdanm 84:0b3ab51c8877 76
bogdanm 84:0b3ab51c8877 77 /**
bogdanm 84:0b3ab51c8877 78 * @}
bogdanm 84:0b3ab51c8877 79 */
bogdanm 84:0b3ab51c8877 80
bogdanm 84:0b3ab51c8877 81 /* Exported macro ------------------------------------------------------------*/
bogdanm 84:0b3ab51c8877 82
Kojto 96:487b796308b0 83 /** @defgroup IRDAEx_Extended_Exported_Macros IRDA Extended Exported Macros
bogdanm 84:0b3ab51c8877 84 * @{
bogdanm 84:0b3ab51c8877 85 */
bogdanm 84:0b3ab51c8877 86 /** @brief Reports the IRDA clock source.
bogdanm 84:0b3ab51c8877 87 * @param __HANDLE__: specifies the UART Handle
bogdanm 84:0b3ab51c8877 88 * @param __CLOCKSOURCE__ : output variable
bogdanm 84:0b3ab51c8877 89 * @retval IRDA clocking source, written in __CLOCKSOURCE__.
bogdanm 84:0b3ab51c8877 90 */
Kojto 96:487b796308b0 91 #if defined (STM32L031xx) || defined (STM32L041xx)
Kojto 96:487b796308b0 92 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
bogdanm 84:0b3ab51c8877 93 do { \
Kojto 96:487b796308b0 94 if((__HANDLE__)->Instance == USART2) \
bogdanm 84:0b3ab51c8877 95 { \
bogdanm 84:0b3ab51c8877 96 switch(__HAL_RCC_GET_USART2_SOURCE()) \
bogdanm 84:0b3ab51c8877 97 { \
bogdanm 84:0b3ab51c8877 98 case RCC_USART2CLKSOURCE_PCLK1: \
bogdanm 84:0b3ab51c8877 99 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
bogdanm 84:0b3ab51c8877 100 break; \
bogdanm 84:0b3ab51c8877 101 case RCC_USART2CLKSOURCE_HSI: \
bogdanm 84:0b3ab51c8877 102 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
bogdanm 84:0b3ab51c8877 103 break; \
bogdanm 84:0b3ab51c8877 104 case RCC_USART2CLKSOURCE_SYSCLK: \
bogdanm 84:0b3ab51c8877 105 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
bogdanm 84:0b3ab51c8877 106 break; \
bogdanm 84:0b3ab51c8877 107 case RCC_USART2CLKSOURCE_LSE: \
bogdanm 84:0b3ab51c8877 108 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
bogdanm 84:0b3ab51c8877 109 break; \
bogdanm 84:0b3ab51c8877 110 default: \
bogdanm 84:0b3ab51c8877 111 break; \
bogdanm 84:0b3ab51c8877 112 } \
bogdanm 84:0b3ab51c8877 113 } \
bogdanm 84:0b3ab51c8877 114 else if((__HANDLE__)->Instance == LPUART1) \
bogdanm 84:0b3ab51c8877 115 { \
bogdanm 84:0b3ab51c8877 116 switch(__HAL_RCC_GET_LPUART1_SOURCE()) \
bogdanm 84:0b3ab51c8877 117 { \
bogdanm 84:0b3ab51c8877 118 case RCC_LPUART1CLKSOURCE_PCLK1: \
bogdanm 84:0b3ab51c8877 119 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
bogdanm 84:0b3ab51c8877 120 break; \
bogdanm 84:0b3ab51c8877 121 case RCC_LPUART1CLKSOURCE_HSI: \
bogdanm 84:0b3ab51c8877 122 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
bogdanm 84:0b3ab51c8877 123 break; \
bogdanm 84:0b3ab51c8877 124 case RCC_LPUART1CLKSOURCE_SYSCLK: \
bogdanm 84:0b3ab51c8877 125 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
bogdanm 84:0b3ab51c8877 126 break; \
bogdanm 84:0b3ab51c8877 127 case RCC_LPUART1CLKSOURCE_LSE: \
bogdanm 84:0b3ab51c8877 128 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
bogdanm 84:0b3ab51c8877 129 break; \
bogdanm 84:0b3ab51c8877 130 default: \
bogdanm 84:0b3ab51c8877 131 break; \
bogdanm 84:0b3ab51c8877 132 } \
bogdanm 84:0b3ab51c8877 133 } \
bogdanm 84:0b3ab51c8877 134 } while(0)
bogdanm 84:0b3ab51c8877 135
Kojto 96:487b796308b0 136 #else /* (STM32L031xx) || defined (STM32L041xx) */
Kojto 96:487b796308b0 137
Kojto 96:487b796308b0 138 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
Kojto 96:487b796308b0 139 do { \
Kojto 96:487b796308b0 140 if((__HANDLE__)->Instance == USART1) \
Kojto 96:487b796308b0 141 { \
Kojto 96:487b796308b0 142 switch(__HAL_RCC_GET_USART1_SOURCE()) \
Kojto 96:487b796308b0 143 { \
Kojto 96:487b796308b0 144 case RCC_USART1CLKSOURCE_PCLK2: \
Kojto 96:487b796308b0 145 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2; \
Kojto 96:487b796308b0 146 break; \
Kojto 96:487b796308b0 147 case RCC_USART1CLKSOURCE_HSI: \
Kojto 96:487b796308b0 148 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
Kojto 96:487b796308b0 149 break; \
Kojto 96:487b796308b0 150 case RCC_USART1CLKSOURCE_SYSCLK: \
Kojto 96:487b796308b0 151 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
Kojto 96:487b796308b0 152 break; \
Kojto 96:487b796308b0 153 case RCC_USART1CLKSOURCE_LSE: \
Kojto 96:487b796308b0 154 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
Kojto 96:487b796308b0 155 break; \
Kojto 96:487b796308b0 156 default: \
Kojto 96:487b796308b0 157 break; \
Kojto 96:487b796308b0 158 } \
Kojto 96:487b796308b0 159 } \
Kojto 96:487b796308b0 160 else if((__HANDLE__)->Instance == USART2) \
Kojto 96:487b796308b0 161 { \
Kojto 96:487b796308b0 162 switch(__HAL_RCC_GET_USART2_SOURCE()) \
Kojto 96:487b796308b0 163 { \
Kojto 96:487b796308b0 164 case RCC_USART2CLKSOURCE_PCLK1: \
Kojto 96:487b796308b0 165 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
Kojto 96:487b796308b0 166 break; \
Kojto 96:487b796308b0 167 case RCC_USART2CLKSOURCE_HSI: \
Kojto 96:487b796308b0 168 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
Kojto 96:487b796308b0 169 break; \
Kojto 96:487b796308b0 170 case RCC_USART2CLKSOURCE_SYSCLK: \
Kojto 96:487b796308b0 171 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
Kojto 96:487b796308b0 172 break; \
Kojto 96:487b796308b0 173 case RCC_USART2CLKSOURCE_LSE: \
Kojto 96:487b796308b0 174 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
Kojto 96:487b796308b0 175 break; \
Kojto 96:487b796308b0 176 default: \
Kojto 96:487b796308b0 177 break; \
Kojto 96:487b796308b0 178 } \
Kojto 96:487b796308b0 179 } \
Kojto 96:487b796308b0 180 else if((__HANDLE__)->Instance == LPUART1) \
Kojto 96:487b796308b0 181 { \
Kojto 96:487b796308b0 182 switch(__HAL_RCC_GET_LPUART1_SOURCE()) \
Kojto 96:487b796308b0 183 { \
Kojto 96:487b796308b0 184 case RCC_LPUART1CLKSOURCE_PCLK1: \
Kojto 96:487b796308b0 185 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
Kojto 96:487b796308b0 186 break; \
Kojto 96:487b796308b0 187 case RCC_LPUART1CLKSOURCE_HSI: \
Kojto 96:487b796308b0 188 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
Kojto 96:487b796308b0 189 break; \
Kojto 96:487b796308b0 190 case RCC_LPUART1CLKSOURCE_SYSCLK: \
Kojto 96:487b796308b0 191 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
Kojto 96:487b796308b0 192 break; \
Kojto 96:487b796308b0 193 case RCC_LPUART1CLKSOURCE_LSE: \
Kojto 96:487b796308b0 194 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
Kojto 96:487b796308b0 195 break; \
Kojto 96:487b796308b0 196 default: \
Kojto 96:487b796308b0 197 break; \
Kojto 96:487b796308b0 198 } \
Kojto 96:487b796308b0 199 } \
Kojto 96:487b796308b0 200 } while(0)
Kojto 96:487b796308b0 201 #endif /* (STM32L031xx) || (STM32L041xx) */
Kojto 96:487b796308b0 202
bogdanm 84:0b3ab51c8877 203 /** @brief Reports the mask to apply to retrieve the received data
bogdanm 84:0b3ab51c8877 204 * according to the word length and to the parity bits activation.
bogdanm 84:0b3ab51c8877 205 * @param __HANDLE__: specifies the IRDA Handle
bogdanm 84:0b3ab51c8877 206 * @retval mask to apply to USART RDR register value.
bogdanm 84:0b3ab51c8877 207 */
Kojto 96:487b796308b0 208 #define IRDA_MASK_COMPUTATION(__HANDLE__) \
bogdanm 84:0b3ab51c8877 209 do { \
bogdanm 84:0b3ab51c8877 210 if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_9B) \
bogdanm 84:0b3ab51c8877 211 { \
bogdanm 84:0b3ab51c8877 212 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
bogdanm 84:0b3ab51c8877 213 { \
bogdanm 84:0b3ab51c8877 214 (__HANDLE__)->Mask = 0x01FF ; \
bogdanm 84:0b3ab51c8877 215 } \
bogdanm 84:0b3ab51c8877 216 else \
bogdanm 84:0b3ab51c8877 217 { \
bogdanm 84:0b3ab51c8877 218 (__HANDLE__)->Mask = 0x00FF ; \
bogdanm 84:0b3ab51c8877 219 } \
bogdanm 84:0b3ab51c8877 220 } \
bogdanm 84:0b3ab51c8877 221 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_8B) \
bogdanm 84:0b3ab51c8877 222 { \
bogdanm 84:0b3ab51c8877 223 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
bogdanm 84:0b3ab51c8877 224 { \
bogdanm 84:0b3ab51c8877 225 (__HANDLE__)->Mask = 0x00FF ; \
bogdanm 84:0b3ab51c8877 226 } \
bogdanm 84:0b3ab51c8877 227 else \
bogdanm 84:0b3ab51c8877 228 { \
bogdanm 84:0b3ab51c8877 229 (__HANDLE__)->Mask = 0x007F ; \
bogdanm 84:0b3ab51c8877 230 } \
bogdanm 84:0b3ab51c8877 231 } \
bogdanm 84:0b3ab51c8877 232 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_7B) \
bogdanm 84:0b3ab51c8877 233 { \
bogdanm 84:0b3ab51c8877 234 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
bogdanm 84:0b3ab51c8877 235 { \
bogdanm 84:0b3ab51c8877 236 (__HANDLE__)->Mask = 0x007F ; \
bogdanm 84:0b3ab51c8877 237 } \
bogdanm 84:0b3ab51c8877 238 else \
bogdanm 84:0b3ab51c8877 239 { \
bogdanm 84:0b3ab51c8877 240 (__HANDLE__)->Mask = 0x003F ; \
bogdanm 84:0b3ab51c8877 241 } \
bogdanm 84:0b3ab51c8877 242 } \
bogdanm 84:0b3ab51c8877 243 } while(0)
bogdanm 84:0b3ab51c8877 244 /**
bogdanm 84:0b3ab51c8877 245 * @}
bogdanm 84:0b3ab51c8877 246 */
bogdanm 84:0b3ab51c8877 247
bogdanm 84:0b3ab51c8877 248 /* Exported functions --------------------------------------------------------*/
bogdanm 84:0b3ab51c8877 249 /* Initialization/de-initialization methods **********************************/
bogdanm 84:0b3ab51c8877 250 /* IO operation methods *******************************************************/
bogdanm 84:0b3ab51c8877 251 /* Peripheral Control methods ************************************************/
bogdanm 84:0b3ab51c8877 252 /* Peripheral State methods **************************************************/
bogdanm 84:0b3ab51c8877 253
bogdanm 84:0b3ab51c8877 254
bogdanm 84:0b3ab51c8877 255 /**
bogdanm 84:0b3ab51c8877 256 * @}
bogdanm 84:0b3ab51c8877 257 */
bogdanm 84:0b3ab51c8877 258
bogdanm 84:0b3ab51c8877 259 /**
bogdanm 84:0b3ab51c8877 260 * @}
bogdanm 84:0b3ab51c8877 261 */
bogdanm 84:0b3ab51c8877 262
bogdanm 84:0b3ab51c8877 263 #ifdef __cplusplus
bogdanm 84:0b3ab51c8877 264 }
bogdanm 84:0b3ab51c8877 265 #endif
bogdanm 84:0b3ab51c8877 266
bogdanm 84:0b3ab51c8877 267 #endif /* __STM32L0xx_HAL_IRDA_EX_H */
bogdanm 84:0b3ab51c8877 268
bogdanm 84:0b3ab51c8877 269 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Kojto 96:487b796308b0 270