]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_STM/TARGET_STM32L0/stm32l0xx_hal_usart_ex.h
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / libraries / mbed / targets / cmsis / TARGET_STM / TARGET_STM32L0 / stm32l0xx_hal_usart_ex.h
1 /**
2   ******************************************************************************
3   * @file    stm32l0xx_hal_usart_ex.h
4   * @author  MCD Application Team
5   * @version V1.2.0
6   * @date    06-February-2015
7   * @brief   Header file of USART HAL Extension module.
8   ******************************************************************************
9   * @attention
10   *                               
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
12   *
13   * Redistribution and use in source and binary forms, with or without modification,
14   * are permitted provided that the following conditions are met:
15   *   1. Redistributions of source code must retain the above copyright notice,
16   *      this list of conditions and the following disclaimer.
17   *   2. Redistributions in binary form must reproduce the above copyright notice,
18   *      this list of conditions and the following disclaimer in the documentation
19   *      and/or other materials provided with the distribution.
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors
21   *      may be used to endorse or promote products derived from this software
22   *      without specific prior written permission.
23   *
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34   *
35   ******************************************************************************  
36   */
37
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32L0xx_HAL_USART_EX_H
40 #define __STM32L0xx_HAL_USART_EX_H
41
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32l0xx_hal_def.h"
48
49 /** @addtogroup STM32L0xx_HAL_Driver
50   * @{
51   */
52 /** @defgroup USARTEx USARTEx Extended USART
53   * @{
54   */
55
56 /* Exported types ------------------------------------------------------------*/
57 /* Exported constants --------------------------------------------------------*/
58 /** @defgroup USARTEx_Exported_Constants USARTEx Exported Constants
59   * @{
60   */
61   
62 /** @defgroup USARTEx_Word_Length Word length definition
63   * @{
64   */
65 #define USART_WORDLENGTH_7B                  ((uint32_t)USART_CR1_M_1)
66 #define USART_WORDLENGTH_8B                  ((uint32_t)0x00000000)
67 #define USART_WORDLENGTH_9B                  ((uint32_t)USART_CR1_M_0)
68 #define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WORDLENGTH_7B) || \
69                                       ((LENGTH) == USART_WORDLENGTH_8B) || \
70                                       ((LENGTH) == USART_WORDLENGTH_9B))                                 
71 /**
72   * @}
73   */  
74   
75 /**
76   * @}
77   */  
78 /* Exported macro ------------------------------------------------------------*/
79
80 /** @defgroup USARTEx_Extended_Exported_Macros USARTEx Exported Macros
81   * @{
82   */
83
84 /** @brief  Reports the USART clock source.
85   * @param  __HANDLE__: specifies the USART Handle
86   * @param  __CLOCKSOURCE__ : output variable   
87   * @retval the USART clocking source, written in __CLOCKSOURCE__.
88   */
89 #if defined (STM32L031xx) || defined (STM32L041xx)
90 #define USART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__)       \
91   do {                                                         \
92     if((__HANDLE__)->Instance == USART2)                       \
93     {                                                          \
94        switch(__HAL_RCC_GET_USART2_SOURCE())                   \
95        {                                                       \
96         case RCC_USART2CLKSOURCE_PCLK1:                        \
97           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK1;         \
98           break;                                               \
99         case RCC_USART2CLKSOURCE_HSI:                          \
100           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI;           \
101           break;                                               \
102         case RCC_USART2CLKSOURCE_SYSCLK:                       \
103           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK;        \
104           break;                                               \
105         case RCC_USART2CLKSOURCE_LSE:                          \
106           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE;           \
107           break;                                               \
108         default:                                               \
109           break;                                               \
110        }                                                       \
111     }                                                          \
112   } while(0)
113
114 #else /* (STM32L031xx) || defined (STM32L041xx) */
115
116 #define USART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__)       \
117   do {                                                         \
118     if((__HANDLE__)->Instance == USART1)                       \
119     {                                                          \
120        switch(__HAL_RCC_GET_USART1_SOURCE())                       \
121        {                                                       \
122         case RCC_USART1CLKSOURCE_PCLK2:                        \
123           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK2;         \
124           break;                                               \
125         case RCC_USART1CLKSOURCE_HSI:                          \
126           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI;           \
127           break;                                               \
128         case RCC_USART1CLKSOURCE_SYSCLK:                       \
129           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK;        \
130           break;                                               \
131         case RCC_USART1CLKSOURCE_LSE:                          \
132           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE;           \
133           break;                                               \
134         default:                                               \
135           break;                                               \
136        }                                                       \
137     }                                                          \
138     else if((__HANDLE__)->Instance == USART2)                  \
139     {                                                          \
140        switch(__HAL_RCC_GET_USART2_SOURCE())                   \
141        {                                                       \
142         case RCC_USART2CLKSOURCE_PCLK1:                        \
143           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK1;         \
144           break;                                               \
145         case RCC_USART2CLKSOURCE_HSI:                          \
146           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI;           \
147           break;                                               \
148         case RCC_USART2CLKSOURCE_SYSCLK:                       \
149           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK;        \
150           break;                                               \
151         case RCC_USART2CLKSOURCE_LSE:                          \
152           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE;           \
153           break;                                               \
154         default:                                               \
155           break;                                               \
156        }                                                       \
157     }                                                          \
158   } while(0)
159 #endif /* (STM32L031xx) || (STM32L041xx) */
160
161 /** @brief  Reports the USART mask to apply to retrieve the received data
162   *         according to the word length and to the parity bits activation.
163   *         If PCE = 1, the parity bit is not included in the data extracted
164   *         by the reception API().
165   *         This masking operation is not carried out in the case of
166   *         DMA transfers.    
167   * @param  __HANDLE__: specifies the USART Handle
168   * @retval mask to apply to USART RDR register value.
169   */  
170 #define USART_MASK_COMPUTATION(__HANDLE__)                      \
171   do {                                                                \
172   if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_9B)           \
173   {                                                                   \
174      if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE)              \
175      {                                                                \
176         (__HANDLE__)->Mask = 0x01FF ;                                 \
177      }                                                                \
178      else                                                             \
179      {                                                                \
180         (__HANDLE__)->Mask = 0x00FF ;                                 \
181      }                                                                \
182   }                                                                   \
183   else if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_8B)      \
184   {                                                                   \
185      if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE)              \
186      {                                                                \
187         (__HANDLE__)->Mask = 0x00FF ;                                 \
188      }                                                                \
189      else                                                             \
190      {                                                                \
191         (__HANDLE__)->Mask = 0x007F ;                                 \
192      }                                                                \
193   }                                                                   \
194   else if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_7B)      \
195   {                                                                   \
196      if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE)              \
197      {                                                                \
198         (__HANDLE__)->Mask = 0x007F ;                                 \
199      }                                                                \
200      else                                                             \
201      {                                                                \
202         (__HANDLE__)->Mask = 0x003F ;                                 \
203      }                                                                \
204   }                                                                   \
205 } while(0)
206
207 /**
208   * @}
209   */   
210
211 /* Exported functions --------------------------------------------------------*/
212 /* Initialization/de-initialization methods  **********************************/
213 /* IO operation methods *******************************************************/
214 /* Peripheral Control methods  ************************************************/
215 /* Peripheral State methods  **************************************************/
216
217
218 /**
219   * @}
220   */ 
221
222 /**
223   * @}
224   */ 
225   
226 #ifdef __cplusplus
227 }
228 #endif
229
230 #endif /* __STM32L0xx_HAL_USART_EX_H */
231
232 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
233