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