]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_M4F_STM32F407ZG-SK/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_usart.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / CORTEX_M4F_STM32F407ZG-SK / Libraries / STM32F4xx_StdPeriph_Driver / inc / stm32f4xx_usart.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f4xx_usart.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0\r
6   * @date    30-September-2011\r
7   * @brief   This file contains all the functions prototypes for the USART \r
8   *          firmware library.\r
9   ******************************************************************************\r
10   * @attention\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 2011 STMicroelectronics</center></h2>\r
20   ******************************************************************************  \r
21   */ \r
22 \r
23 /* Define to prevent recursive inclusion -------------------------------------*/\r
24 #ifndef __STM32F4xx_USART_H\r
25 #define __STM32F4xx_USART_H\r
26 \r
27 #ifdef __cplusplus\r
28  extern "C" {\r
29 #endif\r
30 \r
31 /* Includes ------------------------------------------------------------------*/\r
32 #include "stm32f4xx.h"\r
33 \r
34 /** @addtogroup STM32F4xx_StdPeriph_Driver\r
35   * @{\r
36   */\r
37 \r
38 /** @addtogroup USART\r
39   * @{\r
40   */ \r
41 \r
42 /* Exported types ------------------------------------------------------------*/ \r
43 \r
44 /** \r
45   * @brief  USART Init Structure definition  \r
46   */ \r
47   \r
48 typedef struct\r
49 {\r
50   uint32_t USART_BaudRate;            /*!< This member configures the USART communication baud rate.\r
51                                            The baud rate is computed using the following formula:\r
52                                             - IntegerDivider = ((PCLKx) / (8 * (OVR8+1) * (USART_InitStruct->USART_BaudRate)))\r
53                                             - FractionalDivider = ((IntegerDivider - ((u32) IntegerDivider)) * 8 * (OVR8+1)) + 0.5 \r
54                                            Where OVR8 is the "oversampling by 8 mode" configuration bit in the CR1 register. */\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 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 /* Exported constants --------------------------------------------------------*/\r
99 \r
100 /** @defgroup USART_Exported_Constants\r
101   * @{\r
102   */ \r
103   \r
104 #define IS_USART_ALL_PERIPH(PERIPH) (((PERIPH) == USART1) || \\r
105                                      ((PERIPH) == USART2) || \\r
106                                      ((PERIPH) == USART3) || \\r
107                                      ((PERIPH) == UART4)  || \\r
108                                      ((PERIPH) == UART5)  || \\r
109                                      ((PERIPH) == USART6))\r
110 \r
111 #define IS_USART_1236_PERIPH(PERIPH) (((PERIPH) == USART1) || \\r
112                                       ((PERIPH) == USART2) || \\r
113                                       ((PERIPH) == USART3) || \\r
114                                       ((PERIPH) == USART6))\r
115 \r
116 /** @defgroup USART_Word_Length \r
117   * @{\r
118   */ \r
119   \r
120 #define USART_WordLength_8b                  ((uint16_t)0x0000)\r
121 #define USART_WordLength_9b                  ((uint16_t)0x1000)\r
122                                     \r
123 #define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WordLength_8b) || \\r
124                                       ((LENGTH) == USART_WordLength_9b))\r
125 /**\r
126   * @}\r
127   */ \r
128 \r
129 /** @defgroup USART_Stop_Bits \r
130   * @{\r
131   */ \r
132   \r
133 #define USART_StopBits_1                     ((uint16_t)0x0000)\r
134 #define USART_StopBits_0_5                   ((uint16_t)0x1000)\r
135 #define USART_StopBits_2                     ((uint16_t)0x2000)\r
136 #define USART_StopBits_1_5                   ((uint16_t)0x3000)\r
137 #define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_StopBits_1) || \\r
138                                      ((STOPBITS) == USART_StopBits_0_5) || \\r
139                                      ((STOPBITS) == USART_StopBits_2) || \\r
140                                      ((STOPBITS) == USART_StopBits_1_5))\r
141 /**\r
142   * @}\r
143   */ \r
144 \r
145 /** @defgroup USART_Parity \r
146   * @{\r
147   */ \r
148   \r
149 #define USART_Parity_No                      ((uint16_t)0x0000)\r
150 #define USART_Parity_Even                    ((uint16_t)0x0400)\r
151 #define USART_Parity_Odd                     ((uint16_t)0x0600) \r
152 #define IS_USART_PARITY(PARITY) (((PARITY) == USART_Parity_No) || \\r
153                                  ((PARITY) == USART_Parity_Even) || \\r
154                                  ((PARITY) == USART_Parity_Odd))\r
155 /**\r
156   * @}\r
157   */ \r
158 \r
159 /** @defgroup USART_Mode \r
160   * @{\r
161   */ \r
162   \r
163 #define USART_Mode_Rx                        ((uint16_t)0x0004)\r
164 #define USART_Mode_Tx                        ((uint16_t)0x0008)\r
165 #define IS_USART_MODE(MODE) ((((MODE) & (uint16_t)0xFFF3) == 0x00) && ((MODE) != (uint16_t)0x00))\r
166 /**\r
167   * @}\r
168   */ \r
169 \r
170 /** @defgroup USART_Hardware_Flow_Control \r
171   * @{\r
172   */ \r
173 #define USART_HardwareFlowControl_None       ((uint16_t)0x0000)\r
174 #define USART_HardwareFlowControl_RTS        ((uint16_t)0x0100)\r
175 #define USART_HardwareFlowControl_CTS        ((uint16_t)0x0200)\r
176 #define USART_HardwareFlowControl_RTS_CTS    ((uint16_t)0x0300)\r
177 #define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)\\r
178                               (((CONTROL) == USART_HardwareFlowControl_None) || \\r
179                                ((CONTROL) == USART_HardwareFlowControl_RTS) || \\r
180                                ((CONTROL) == USART_HardwareFlowControl_CTS) || \\r
181                                ((CONTROL) == USART_HardwareFlowControl_RTS_CTS))\r
182 /**\r
183   * @}\r
184   */ \r
185 \r
186 /** @defgroup USART_Clock \r
187   * @{\r
188   */ \r
189 #define USART_Clock_Disable                  ((uint16_t)0x0000)\r
190 #define USART_Clock_Enable                   ((uint16_t)0x0800)\r
191 #define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_Clock_Disable) || \\r
192                                ((CLOCK) == USART_Clock_Enable))\r
193 /**\r
194   * @}\r
195   */ \r
196 \r
197 /** @defgroup USART_Clock_Polarity \r
198   * @{\r
199   */\r
200   \r
201 #define USART_CPOL_Low                       ((uint16_t)0x0000)\r
202 #define USART_CPOL_High                      ((uint16_t)0x0400)\r
203 #define IS_USART_CPOL(CPOL) (((CPOL) == USART_CPOL_Low) || ((CPOL) == USART_CPOL_High))\r
204 \r
205 /**\r
206   * @}\r
207   */ \r
208 \r
209 /** @defgroup USART_Clock_Phase\r
210   * @{\r
211   */\r
212 \r
213 #define USART_CPHA_1Edge                     ((uint16_t)0x0000)\r
214 #define USART_CPHA_2Edge                     ((uint16_t)0x0200)\r
215 #define IS_USART_CPHA(CPHA) (((CPHA) == USART_CPHA_1Edge) || ((CPHA) == USART_CPHA_2Edge))\r
216 \r
217 /**\r
218   * @}\r
219   */\r
220 \r
221 /** @defgroup USART_Last_Bit\r
222   * @{\r
223   */\r
224 \r
225 #define USART_LastBit_Disable                ((uint16_t)0x0000)\r
226 #define USART_LastBit_Enable                 ((uint16_t)0x0100)\r
227 #define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LastBit_Disable) || \\r
228                                    ((LASTBIT) == USART_LastBit_Enable))\r
229 /**\r
230   * @}\r
231   */ \r
232 \r
233 /** @defgroup USART_Interrupt_definition \r
234   * @{\r
235   */\r
236   \r
237 #define USART_IT_PE                          ((uint16_t)0x0028)\r
238 #define USART_IT_TXE                         ((uint16_t)0x0727)\r
239 #define USART_IT_TC                          ((uint16_t)0x0626)\r
240 #define USART_IT_RXNE                        ((uint16_t)0x0525)\r
241 #define USART_IT_ORE_RX                      ((uint16_t)0x0325) /* In case interrupt is generated if the RXNEIE bit is set */\r
242 #define USART_IT_IDLE                        ((uint16_t)0x0424)\r
243 #define USART_IT_LBD                         ((uint16_t)0x0846)\r
244 #define USART_IT_CTS                         ((uint16_t)0x096A)\r
245 #define USART_IT_ERR                         ((uint16_t)0x0060)\r
246 #define USART_IT_ORE_ER                      ((uint16_t)0x0360) /* In case interrupt is generated if the EIE bit is set */\r
247 #define USART_IT_NE                          ((uint16_t)0x0260)\r
248 #define USART_IT_FE                          ((uint16_t)0x0160)\r
249 \r
250 /** @defgroup USART_Legacy \r
251   * @{\r
252   */\r
253 #define USART_IT_ORE                          USART_IT_ORE_ER               \r
254 /**\r
255   * @}\r
256   */\r
257 \r
258 #define IS_USART_CONFIG_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \\r
259                                 ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \\r
260                                 ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \\r
261                                 ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ERR))\r
262 #define IS_USART_GET_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \\r
263                              ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \\r
264                              ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \\r
265                              ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ORE) || \\r
266                              ((IT) == USART_IT_ORE_RX) || ((IT) == USART_IT_ORE_ER) || \\r
267                              ((IT) == USART_IT_NE) || ((IT) == USART_IT_FE))\r
268 #define IS_USART_CLEAR_IT(IT) (((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \\r
269                                ((IT) == USART_IT_LBD) || ((IT) == USART_IT_CTS))\r
270 /**\r
271   * @}\r
272   */\r
273 \r
274 /** @defgroup USART_DMA_Requests \r
275   * @{\r
276   */\r
277 \r
278 #define USART_DMAReq_Tx                      ((uint16_t)0x0080)\r
279 #define USART_DMAReq_Rx                      ((uint16_t)0x0040)\r
280 #define IS_USART_DMAREQ(DMAREQ) ((((DMAREQ) & (uint16_t)0xFF3F) == 0x00) && ((DMAREQ) != (uint16_t)0x00))\r
281 \r
282 /**\r
283   * @}\r
284   */ \r
285 \r
286 /** @defgroup USART_WakeUp_methods\r
287   * @{\r
288   */\r
289 \r
290 #define USART_WakeUp_IdleLine                ((uint16_t)0x0000)\r
291 #define USART_WakeUp_AddressMark             ((uint16_t)0x0800)\r
292 #define IS_USART_WAKEUP(WAKEUP) (((WAKEUP) == USART_WakeUp_IdleLine) || \\r
293                                  ((WAKEUP) == USART_WakeUp_AddressMark))\r
294 /**\r
295   * @}\r
296   */\r
297 \r
298 /** @defgroup USART_LIN_Break_Detection_Length \r
299   * @{\r
300   */\r
301   \r
302 #define USART_LINBreakDetectLength_10b      ((uint16_t)0x0000)\r
303 #define USART_LINBreakDetectLength_11b      ((uint16_t)0x0020)\r
304 #define IS_USART_LIN_BREAK_DETECT_LENGTH(LENGTH) \\r
305                                (((LENGTH) == USART_LINBreakDetectLength_10b) || \\r
306                                 ((LENGTH) == USART_LINBreakDetectLength_11b))\r
307 /**\r
308   * @}\r
309   */\r
310 \r
311 /** @defgroup USART_IrDA_Low_Power \r
312   * @{\r
313   */\r
314 \r
315 #define USART_IrDAMode_LowPower              ((uint16_t)0x0004)\r
316 #define USART_IrDAMode_Normal                ((uint16_t)0x0000)\r
317 #define IS_USART_IRDA_MODE(MODE) (((MODE) == USART_IrDAMode_LowPower) || \\r
318                                   ((MODE) == USART_IrDAMode_Normal))\r
319 /**\r
320   * @}\r
321   */ \r
322 \r
323 /** @defgroup USART_Flags \r
324   * @{\r
325   */\r
326 \r
327 #define USART_FLAG_CTS                       ((uint16_t)0x0200)\r
328 #define USART_FLAG_LBD                       ((uint16_t)0x0100)\r
329 #define USART_FLAG_TXE                       ((uint16_t)0x0080)\r
330 #define USART_FLAG_TC                        ((uint16_t)0x0040)\r
331 #define USART_FLAG_RXNE                      ((uint16_t)0x0020)\r
332 #define USART_FLAG_IDLE                      ((uint16_t)0x0010)\r
333 #define USART_FLAG_ORE                       ((uint16_t)0x0008)\r
334 #define USART_FLAG_NE                        ((uint16_t)0x0004)\r
335 #define USART_FLAG_FE                        ((uint16_t)0x0002)\r
336 #define USART_FLAG_PE                        ((uint16_t)0x0001)\r
337 #define IS_USART_FLAG(FLAG) (((FLAG) == USART_FLAG_PE) || ((FLAG) == USART_FLAG_TXE) || \\r
338                              ((FLAG) == USART_FLAG_TC) || ((FLAG) == USART_FLAG_RXNE) || \\r
339                              ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_LBD) || \\r
340                              ((FLAG) == USART_FLAG_CTS) || ((FLAG) == USART_FLAG_ORE) || \\r
341                              ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE))\r
342                               \r
343 #define IS_USART_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0xFC9F) == 0x00) && ((FLAG) != (uint16_t)0x00))\r
344 \r
345 #define IS_USART_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0) && ((BAUDRATE) < 7500001))\r
346 #define IS_USART_ADDRESS(ADDRESS) ((ADDRESS) <= 0xF)\r
347 #define IS_USART_DATA(DATA) ((DATA) <= 0x1FF)\r
348 \r
349 /**\r
350   * @}\r
351   */ \r
352 \r
353 /**\r
354   * @}\r
355   */ \r
356 \r
357 /* Exported macro ------------------------------------------------------------*/\r
358 /* Exported functions --------------------------------------------------------*/  \r
359 \r
360 /*  Function used to set the USART configuration to the default reset state ***/ \r
361 void USART_DeInit(USART_TypeDef* USARTx);\r
362 \r
363 /* Initialization and Configuration functions *********************************/\r
364 void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);\r
365 void USART_StructInit(USART_InitTypeDef* USART_InitStruct);\r
366 void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);\r
367 void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);\r
368 void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
369 void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler);\r
370 void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
371 void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
372 \r
373 /* Data transfers functions ***************************************************/ \r
374 void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);\r
375 uint16_t USART_ReceiveData(USART_TypeDef* USARTx);\r
376 \r
377 /* Multi-Processor Communication functions ************************************/\r
378 void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address);\r
379 void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp);\r
380 void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
381 \r
382 /* LIN mode functions *********************************************************/\r
383 void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t USART_LINBreakDetectLength);\r
384 void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
385 void USART_SendBreak(USART_TypeDef* USARTx);\r
386 \r
387 /* Half-duplex mode function **************************************************/\r
388 void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
389 \r
390 /* Smartcard mode functions ***************************************************/\r
391 void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
392 void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
393 void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime);\r
394 \r
395 /* IrDA mode functions ********************************************************/\r
396 void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode);\r
397 void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState);\r
398 \r
399 /* DMA transfers management functions *****************************************/\r
400 void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);\r
401 \r
402 /* Interrupts and flags management functions **********************************/\r
403 void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);\r
404 FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);\r
405 void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);\r
406 ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);\r
407 void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);\r
408 \r
409 #ifdef __cplusplus\r
410 }\r
411 #endif\r
412 \r
413 #endif /* __STM32F4xx_USART_H */\r
414 \r
415 /**\r
416   * @}\r
417   */ \r
418 \r
419 /**\r
420   * @}\r
421   */ \r
422 \r
423 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/\r