]> git.sur5r.net Git - freertos/blob - Demo/_Cortex_STM32L152_IAR/system_and_ST_code/STM32L1xx_StdPeriph_Driver/inc/stm32l1xx_usart.h
First phase of changing the directory that starts Cortex, with one that starts CORTEX.
[freertos] / Demo / _Cortex_STM32L152_IAR / system_and_ST_code / STM32L1xx_StdPeriph_Driver / inc / stm32l1xx_usart.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32l1xx_usart.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0RC1\r
6   * @date    07/02/2010\r
7   * @brief   This file contains all the functions prototypes for the USART \r
8   *          firmware library.\r
9   ******************************************************************************\r
10   * @copy\r
11   *\r
12   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
14   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
15   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
16   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
17   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18   *\r
19   * <h2><center>&copy; COPYRIGHT 2010 STMicroelectronics</center></h2>\r
20   */ \r
21 \r
22 /* Define to prevent recursive inclusion -------------------------------------*/\r
23 #ifndef __STM32L1xx_USART_H\r
24 #define __STM32L1xx_USART_H\r
25 \r
26 #ifdef __cplusplus\r
27  extern "C" {\r
28 #endif\r
29 \r
30 /* Includes ------------------------------------------------------------------*/\r
31 #include "stm32l1xx.h"\r
32 \r
33 /** @addtogroup STM32L1xx_StdPeriph_Driver\r
34   * @{\r
35   */\r
36 \r
37 /** @addtogroup USART\r
38   * @{\r
39   */ \r
40 \r
41 /** @defgroup USART_Exported_Types\r
42   * @{\r
43   */ \r
44 \r
45 /** \r
46   * @brief  USART Init Structure definition  \r
47   */ \r
48   \r
49 typedef struct\r
50 {\r
51   uint32_t USART_BaudRate;            /*!< This member configures the USART communication baud rate.\r
52                                            The baud rate is computed using the following formula:\r
53                                             - IntegerDivider = ((PCLKx) / (16 * (USART_InitStruct->USART_BaudRate)))\r
54                                             - FractionalDivider = ((IntegerDivider - ((u32) IntegerDivider)) * 16) + 0.5 */\r
55 \r
56   uint16_t USART_WordLength;          /*!< Specifies the number of data bits transmitted or received in a frame.\r
57                                            This parameter can be a value of @ref USART_Word_Length */\r
58 \r
59   uint16_t USART_StopBits;            /*!< Specifies the number of stop bits transmitted.\r
60                                            This parameter can be a value of @ref USART_Stop_Bits */\r
61 \r
62   uint16_t USART_Parity;              /*!< Specifies the parity mode.\r
63                                            This parameter can be a value of @ref USART_Parity\r
64                                            @note When parity is enabled, the computed parity is inserted\r
65                                                  at the MSB position of the transmitted data (9th bit when\r
66                                                  the word length is set to 9 data bits; 8th bit when the\r
67                                                  word length is set to 8 data bits). */\r
68  \r
69   uint16_t USART_Mode;                /*!< Specifies wether the Receive or Transmit mode is enabled or disabled.\r
70                                            This parameter can be a value of @ref USART_Mode */\r
71 \r
72   uint16_t USART_HardwareFlowControl; /*!< Specifies wether the hardware flow control mode is enabled\r
73                                            or disabled.\r
74                                            This parameter can be a value of @ref USART_Hardware_Flow_Control */\r
75 } USART_InitTypeDef;\r
76 \r
77 /** \r
78   * @brief  USART Clock Init Structure definition  \r
79   */ \r
80   \r
81 typedef struct\r
82 {\r
83 \r
84   uint16_t USART_Clock;   /*!< Specifies whether the USART clock is enabled or disabled.\r
85                                This parameter can be a value of @ref USART_Clock */\r
86 \r
87   uint16_t USART_CPOL;    /*!< Specifies the steady state value of the serial clock.\r
88                                This parameter can be a value of @ref USART_Clock_Polarity */\r
89 \r
90   uint16_t USART_CPHA;    /*!< Specifies the clock transition on which the bit capture is made.\r
91                                This parameter can be a value of @ref USART_Clock_Phase */\r
92 \r
93   uint16_t USART_LastBit; /*!< Specifies whether the clock pulse corresponding to the last transmitted\r
94                                data bit (MSB) has to be output on the SCLK pin in synchronous mode.\r
95                                This parameter can be a value of @ref USART_Last_Bit */\r
96 } USART_ClockInitTypeDef;\r
97 \r
98 /**\r
99   * @}\r
100   */ \r
101 \r
102 /** @defgroup USART_Exported_Constants\r
103   * @{\r
104   */ \r
105   \r
106 #define IS_USART_ALL_PERIPH(PERIPH) (((PERIPH) == USART1) || \\r
107                                      ((PERIPH) == USART2) || \\r
108                                      ((PERIPH) == USART3))\r
109 \r
110 /** @defgroup USART_Word_Length \r
111   * @{\r
112   */ \r
113   \r
114 #define USART_WordLength_8b                  ((uint16_t)0x0000)\r
115 #define USART_WordLength_9b                  ((uint16_t)0x1000)\r
116                                     \r
117 #define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WordLength_8b) || \\r
118                                       ((LENGTH) == USART_WordLength_9b))\r
119 /**\r
120   * @}\r
121   */ \r
122 \r
123 /** @defgroup USART_Stop_Bits \r
124   * @{\r
125   */ \r
126   \r
127 #define USART_StopBits_1                     ((uint16_t)0x0000)\r
128 #define USART_StopBits_0_5                   ((uint16_t)0x1000)\r
129 #define USART_StopBits_2                     ((uint16_t)0x2000)\r
130 #define USART_StopBits_1_5                   ((uint16_t)0x3000)\r
131 #define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_StopBits_1) || \\r
132                                      ((STOPBITS) == USART_StopBits_0_5) || \\r
133                                      ((STOPBITS) == USART_StopBits_2) || \\r
134                                      ((STOPBITS) == USART_StopBits_1_5))\r
135 /**\r
136   * @}\r
137   */ \r
138 \r
139 /** @defgroup USART_Parity \r
140   * @{\r
141   */ \r
142   \r
143 #define USART_Parity_No                      ((uint16_t)0x0000)\r
144 #define USART_Parity_Even                    ((uint16_t)0x0400)\r
145 #define USART_Parity_Odd                     ((uint16_t)0x0600) \r
146 #define IS_USART_PARITY(PARITY) (((PARITY) == USART_Parity_No) || \\r
147                                  ((PARITY) == USART_Parity_Even) || \\r
148                                  ((PARITY) == USART_Parity_Odd))\r
149 /**\r
150   * @}\r
151   */ \r
152 \r
153 /** @defgroup USART_Mode \r
154   * @{\r
155   */ \r
156   \r
157 #define USART_Mode_Rx                        ((uint16_t)0x0004)\r
158 #define USART_Mode_Tx                        ((uint16_t)0x0008)\r
159 #define IS_USART_MODE(MODE) ((((MODE) & (uint16_t)0xFFF3) == 0x00) && ((MODE) != (uint16_t)0x00))\r
160 /**\r
161   * @}\r
162   */ \r
163 \r
164 /** @defgroup USART_Hardware_Flow_Control \r
165   * @{\r
166   */ \r
167 #define USART_HardwareFlowControl_None       ((uint16_t)0x0000)\r
168 #define USART_HardwareFlowControl_RTS        ((uint16_t)0x0100)\r
169 #define USART_HardwareFlowControl_CTS        ((uint16_t)0x0200)\r
170 #define USART_HardwareFlowControl_RTS_CTS    ((uint16_t)0x0300)\r
171 #define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)\\r
172                               (((CONTROL) == USART_HardwareFlowControl_None) || \\r
173                                ((CONTROL) == USART_HardwareFlowControl_RTS) || \\r
174                                ((CONTROL) == USART_HardwareFlowControl_CTS) || \\r
175                                ((CONTROL) == USART_HardwareFlowControl_RTS_CTS))\r
176 /**\r
177   * @}\r
178   */ \r
179 \r
180 /** @defgroup USART_Clock \r
181   * @{\r
182   */ \r
183 #define USART_Clock_Disable                  ((uint16_t)0x0000)\r
184 #define USART_Clock_Enable                   ((uint16_t)0x0800)\r
185 #define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_Clock_Disable) || \\r
186                                ((CLOCK) == USART_Clock_Enable))\r
187 /**\r
188   * @}\r
189   */ \r
190 \r
191 /** @defgroup USART_Clock_Polarity \r
192   * @{\r
193   */\r
194   \r
195 #define USART_CPOL_Low                       ((uint16_t)0x0000)\r
196 #define USART_CPOL_High                      ((uint16_t)0x0400)\r
197 #define IS_USART_CPOL(CPOL) (((CPOL) == USART_CPOL_Low) || ((CPOL) == USART_CPOL_High))\r
198 \r
199 /**\r
200   * @}\r
201   */ \r
202 \r
203 /** @defgroup USART_Clock_Phase\r
204   * @{\r
205   */\r
206 \r
207 #define USART_CPHA_1Edge                     ((uint16_t)0x0000)\r
208 #define USART_CPHA_2Edge                     ((uint16_t)0x0200)\r
209 #define IS_USART_CPHA(CPHA) (((CPHA) == USART_CPHA_1Edge) || ((CPHA) == USART_CPHA_2Edge))\r
210 \r
211 /**\r
212   * @}\r
213   */\r
214 \r
215 /** @defgroup USART_Last_Bit\r
216   * @{\r
217   */\r
218 \r
219 #define USART_LastBit_Disable                ((uint16_t)0x0000)\r
220 #define USART_LastBit_Enable                 ((uint16_t)0x0100)\r
221 #define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LastBit_Disable) || \\r
222                                    ((LASTBIT) == USART_LastBit_Enable))\r
223 /**\r
224   * @}\r
225   */ \r
226 \r
227 /** @defgroup USART_Interrupt_definition \r
228   * @{\r
229   */\r
230   \r
231 #define USART_IT_PE                          ((uint16_t)0x0028)\r
232 #define USART_IT_TXE                         ((uint16_t)0x0727)\r
233 #define USART_IT_TC                          ((uint16_t)0x0626)\r
234 #define USART_IT_RXNE                        ((uint16_t)0x0525)\r
235 #define USART_IT_IDLE                        ((uint16_t)0x0424)\r
236 #define USART_IT_LBD                         ((uint16_t)0x0846)\r
237 #define USART_IT_CTS                         ((uint16_t)0x096A)\r
238 #define USART_IT_ERR                         ((uint16_t)0x0060)\r
239 #define USART_IT_ORE                         ((uint16_t)0x0360)\r
240 #define USART_IT_NE                          ((uint16_t)0x0260)\r
241 #define USART_IT_FE                          ((uint16_t)0x0160)\r
242 #define IS_USART_CONFIG_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \\r
243                                 ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \\r
244                                 ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \\r
245                                 ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ERR))\r
246 #define IS_USART_GET_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \\r
247                              ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \\r
248                              ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \\r
249                              ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ORE) || \\r
250                              ((IT) == USART_IT_NE) || ((IT) == USART_IT_FE))\r
251 #define IS_USART_CLEAR_IT(IT) (((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \\r
252                                ((IT) == USART_IT_LBD) || ((IT) == USART_IT_CTS))\r
253 /**\r
254   * @}\r
255   */\r
256 \r
257 /** @defgroup USART_DMA_Requests \r
258   * @{\r
259   */\r
260 \r
261 #define USART_DMAReq_Tx                      ((uint16_t)0x0080)\r
262 #define USART_DMAReq_Rx                      ((uint16_t)0x0040)\r
263 #define IS_USART_DMAREQ(DMAREQ) ((((DMAREQ) & (uint16_t)0xFF3F) == 0x00) && ((DMAREQ) != (uint16_t)0x00))\r
264 \r
265 /**\r
266   * @}\r
267   */ \r
268 \r
269 /** @defgroup USART_WakeUp_methods\r
270   * @{\r
271   */\r
272 \r
273 #define USART_WakeUp_IdleLine                ((uint16_t)0x0000)\r
274 #define USART_WakeUp_AddressMark             ((uint16_t)0x0800)\r
275 #define IS_USART_WAKEUP(WAKEUP) (((WAKEUP) == USART_WakeUp_IdleLine) || \\r
276                                  ((WAKEUP) == USART_WakeUp_AddressMark))\r
277 /**\r
278   * @}\r
279   */\r
280 \r
281 /** @defgroup USART_LIN_Break_Detection_Length \r
282   * @{\r
283   */\r
284   \r
285 #define USART_LINBreakDetectLength_10b      ((uint16_t)0x0000)\r
286 #define USART_LINBreakDetectLength_11b      ((uint16_t)0x0020)\r
287 #define IS_USART_LIN_BREAK_DETECT_LENGTH(LENGTH) \\r
288                                (((LENGTH) == USART_LINBreakDetectLength_10b) || \\r
289                                 ((LENGTH) == USART_LINBreakDetectLength_11b))\r
290 /**\r
291   * @}\r
292   */\r
293 \r
294 /** @defgroup USART_IrDA_Low_Power \r
295   * @{\r
296   */\r
297 \r
298 #define USART_IrDAMode_LowPower              ((uint16_t)0x0004)\r
299 #define USART_IrDAMode_Normal                ((uint16_t)0x0000)\r
300 #define IS_USART_IRDA_MODE(MODE) (((MODE) == USART_IrDAMode_LowPower) || \\r
301                                   ((MODE) == USART_IrDAMode_Normal))\r
302 /**\r
303   * @}\r
304   */ \r
305 \r
306 /** @defgroup USART_Flags \r
307   * @{\r
308   */\r
309 \r
310 #define USART_FLAG_CTS                       ((uint16_t)0x0200)\r
311 #define USART_FLAG_LBD                       ((uint16_t)0x0100)\r
312 #define USART_FLAG_TXE                       ((uint16_t)0x0080)\r
313 #define USART_FLAG_TC                        ((uint16_t)0x0040)\r
314 #define USART_FLAG_RXNE                      ((uint16_t)0x0020)\r
315 #define USART_FLAG_IDLE                      ((uint16_t)0x0010)\r
316 #define USART_FLAG_ORE                       ((uint16_t)0x0008)\r
317 #define USART_FLAG_NE                        ((uint16_t)0x0004)\r
318 #define USART_FLAG_FE                        ((uint16_t)0x0002)\r
319 #define USART_FLAG_PE                        ((uint16_t)0x0001)\r
320 #define IS_USART_FLAG(FLAG) (((FLAG) == USART_FLAG_PE) || ((FLAG) == USART_FLAG_TXE) || \\r
321                              ((FLAG) == USART_FLAG_TC) || ((FLAG) == USART_FLAG_RXNE) || \\r
322                              ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_LBD) || \\r
323                              ((FLAG) == USART_FLAG_CTS) || ((FLAG) == USART_FLAG_ORE) || \\r
324                              ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE))\r
325                               \r
326 #define IS_USART_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0xFC9F) == 0x00) && ((FLAG) != (uint16_t)0x00))\r
327 \r
328 #define IS_USART_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0) && ((BAUDRATE) < 0x003D0901))\r
329 #define IS_USART_ADDRESS(ADDRESS) ((ADDRESS) <= 0xF)\r
330 #define IS_USART_DATA(DATA) ((DATA) <= 0x1FF)\r
331 \r
332 /**\r
333   * @}\r
334   */ \r
335 \r
336 /**\r
337   * @}\r
338   */ \r
339 \r
340 /** @defgroup USART_Exported_Macros\r
341   * @{\r
342   */ \r
343 \r
344 /**\r
345   * @}\r
346   */ \r
347 \r
348 /** @defgroup USART_Exported_Functions\r
349   * @{\r
350   */\r
351 \r
352 void USART_DeInit(USART_TypeDef* USARTx);\r
353 void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);\r
354 void USART_StructInit(USART_InitTypeDef* USART_InitStruct);\r
355 void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);\r
356 void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);\r
357 void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
358 void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);\r
359 void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);\r
360 void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address);\r
361 void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp);\r
362 void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
363 void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t USART_LINBreakDetectLength);\r
364 void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
365 void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);\r
366 uint16_t USART_ReceiveData(USART_TypeDef* USARTx);\r
367 void USART_SendBreak(USART_TypeDef* USARTx);\r
368 void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime);\r
369 void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler);\r
370 void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
371 void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
372 void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
373 void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
374 void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
375 void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode);\r
376 void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
377 FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);\r
378 void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);\r
379 ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);\r
380 void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);\r
381 \r
382 #ifdef __cplusplus\r
383 }\r
384 #endif\r
385 \r
386 #endif /* __STM32L1xx_USART_H */\r
387 /**\r
388   * @}\r
389   */ \r
390 \r
391 /**\r
392   * @}\r
393   */ \r
394 \r
395 /**\r
396   * @}\r
397   */ \r
398 \r
399 /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/\r