2 ******************************************************************************
\r
3 * @file stm32f7xx_hal_irda_ex.h
\r
4 * @author MCD Application Team
\r
7 * @brief Header file of IRDA HAL Extension module.
\r
8 ******************************************************************************
\r
11 * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
\r
13 * Redistribution and use in source and binary forms, with or without modification,
\r
14 * are permitted provided that the following conditions are met:
\r
15 * 1. Redistributions of source code must retain the above copyright notice,
\r
16 * this list of conditions and the following disclaimer.
\r
17 * 2. Redistributions in binary form must reproduce the above copyright notice,
\r
18 * this list of conditions and the following disclaimer in the documentation
\r
19 * and/or other materials provided with the distribution.
\r
20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
\r
21 * may be used to endorse or promote products derived from this software
\r
22 * without specific prior written permission.
\r
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
\r
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
\r
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
\r
27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
\r
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
\r
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
\r
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
\r
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
\r
32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
\r
33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\r
35 ******************************************************************************
\r
38 /* Define to prevent recursive inclusion -------------------------------------*/
\r
39 #ifndef __STM32F7xx_HAL_IRDA_EX_H
\r
40 #define __STM32F7xx_HAL_IRDA_EX_H
\r
46 /* Includes ------------------------------------------------------------------*/
\r
47 #include "stm32f7xx_hal_def.h"
\r
49 /** @addtogroup STM32F7xx_HAL_Driver
\r
53 /** @addtogroup IRDAEx
\r
57 /* Exported types ------------------------------------------------------------*/
\r
58 /* Exported constants --------------------------------------------------------*/
\r
59 /** @defgroup IRDAEx_Extended_Exported_Constants IRDAEx Extended Exported Constants
\r
63 /** @defgroup IRDAEx_Word_Length IRDAEx Word Length
\r
66 #define IRDA_WORDLENGTH_7B ((uint32_t)USART_CR1_M_1)
\r
67 #define IRDA_WORDLENGTH_8B ((uint32_t)0x00000000)
\r
68 #define IRDA_WORDLENGTH_9B ((uint32_t)USART_CR1_M_0)
\r
78 /* Exported macro ------------------------------------------------------------*/
\r
80 /* Private macros ------------------------------------------------------------*/
\r
82 /** @defgroup IRDAEx_Private_Macros IRDAEx Private Macros
\r
85 /** @brief Reports the IRDA clock source.
\r
86 * @param __HANDLE__: specifies the IRDA Handle
\r
87 * @param __CLOCKSOURCE__ : output variable
\r
88 * @retval IRDA clocking source, written in __CLOCKSOURCE__.
\r
90 #define IRDA_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
\r
92 if((__HANDLE__)->Instance == USART1) \
\r
94 switch(__HAL_RCC_GET_USART1_SOURCE()) \
\r
96 case RCC_USART1CLKSOURCE_PCLK2: \
\r
97 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2; \
\r
99 case RCC_USART1CLKSOURCE_HSI: \
\r
100 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
\r
102 case RCC_USART1CLKSOURCE_SYSCLK: \
\r
103 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
\r
105 case RCC_USART1CLKSOURCE_LSE: \
\r
106 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
\r
112 else if((__HANDLE__)->Instance == USART2) \
\r
114 switch(__HAL_RCC_GET_USART2_SOURCE()) \
\r
116 case RCC_USART2CLKSOURCE_PCLK1: \
\r
117 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
\r
119 case RCC_USART2CLKSOURCE_HSI: \
\r
120 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
\r
122 case RCC_USART2CLKSOURCE_SYSCLK: \
\r
123 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
\r
125 case RCC_USART2CLKSOURCE_LSE: \
\r
126 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
\r
132 else if((__HANDLE__)->Instance == USART3) \
\r
134 switch(__HAL_RCC_GET_USART3_SOURCE()) \
\r
136 case RCC_USART3CLKSOURCE_PCLK1: \
\r
137 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK1; \
\r
139 case RCC_USART3CLKSOURCE_HSI: \
\r
140 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
\r
142 case RCC_USART3CLKSOURCE_SYSCLK: \
\r
143 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
\r
145 case RCC_USART3CLKSOURCE_LSE: \
\r
146 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
\r
152 else if((__HANDLE__)->Instance == USART6) \
\r
154 switch(__HAL_RCC_GET_USART6_SOURCE()) \
\r
156 case RCC_USART6CLKSOURCE_PCLK2: \
\r
157 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_PCLK2; \
\r
159 case RCC_USART6CLKSOURCE_HSI: \
\r
160 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_HSI; \
\r
162 case RCC_USART6CLKSOURCE_SYSCLK: \
\r
163 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_SYSCLK; \
\r
165 case RCC_USART6CLKSOURCE_LSE: \
\r
166 (__CLOCKSOURCE__) = IRDA_CLOCKSOURCE_LSE; \
\r
174 /** @brief Reports the mask to apply to retrieve the received data
\r
175 * according to the word length and to the parity bits activation.
\r
176 * @param __HANDLE__: specifies the IRDA Handle
\r
177 * @retval mask to apply to USART RDR register value.
\r
179 #define IRDA_MASK_COMPUTATION(__HANDLE__) \
\r
181 if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_9B) \
\r
183 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
\r
185 (__HANDLE__)->Mask = 0x01FF ; \
\r
189 (__HANDLE__)->Mask = 0x00FF ; \
\r
192 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_8B) \
\r
194 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
\r
196 (__HANDLE__)->Mask = 0x00FF ; \
\r
200 (__HANDLE__)->Mask = 0x007F ; \
\r
203 else if ((__HANDLE__)->Init.WordLength == IRDA_WORDLENGTH_7B) \
\r
205 if ((__HANDLE__)->Init.Parity == IRDA_PARITY_NONE) \
\r
207 (__HANDLE__)->Mask = 0x007F ; \
\r
211 (__HANDLE__)->Mask = 0x003F ; \
\r
216 #define IS_IRDA_WORD_LENGTH(LENGTH) (((LENGTH) == IRDA_WORDLENGTH_7B) || \
\r
217 ((LENGTH) == IRDA_WORDLENGTH_8B) || \
\r
218 ((LENGTH) == IRDA_WORDLENGTH_9B))
\r
223 /* Exported functions --------------------------------------------------------*/
\r
237 #endif /* __STM32F7xx_HAL_IRDA_EX_H */
\r
239 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
\r