1 /**
2   ******************************************************************************
3   * @file    stm32f37x_usart.h
4   * @author  MCD Application Team
5   * @version V1.0.0
6   * @date    20-September-2012
7   * @brief   This file contains all the functions prototypes for the USART
8   *          firmware library.
9   ******************************************************************************
10   * @attention
11   *
12   * <h2><center>&copy; COPYRIGHT 2012 STMicroelectronics</center></h2>
13   *
14   * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
15   * You may not use this file except in compliance with the License.
16   * You may obtain a copy of the License at:
17   *
18   *        http://www.st.com/software_license_agreement_liberty_v2
19   *
20   * Unless required by applicable law or agreed to in writing, software
21   * distributed under the License is distributed on an "AS IS" BASIS,
22   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23   * See the License for the specific language governing permissions and
24   * limitations under the License.
25   *
26   ******************************************************************************
27   */
28 
29 /* Define to prevent recursive inclusion -------------------------------------*/
30 #ifndef __STM32F37X_USART_H
31 #define __STM32F37X_USART_H
32 
33 #ifdef __cplusplus
34  extern "C" {
35 #endif
36 
37 /* Includes ------------------------------------------------------------------*/
38 #include "stm32f37x.h"
39 
40 /** @addtogroup STM32F37x_StdPeriph_Driver
41   * @{
42   */
43 
44 /** @addtogroup USART
45   * @{
46   */
47 
48 /* Exported types ------------------------------------------------------------*/
49 
50 
51 
52 /**
53   * @brief  USART Init Structure definition
54   */
55 
56 typedef struct
57 {
58   uint32_t USART_BaudRate;            /*!< This member configures the USART communication baud rate.
59                                            The baud rate is computed using the following formula:
60                                             - IntegerDivider = ((PCLKx) / (16 * (USART_InitStruct->USART_BaudRate)))
61                                             - FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5 */
62 
63   uint32_t USART_WordLength;          /*!< Specifies the number of data bits transmitted or received in a frame.
64                                            This parameter can be a value of @ref USART_Word_Length */
65 
66   uint32_t USART_StopBits;            /*!< Specifies the number of stop bits transmitted.
67                                            This parameter can be a value of @ref USART_Stop_Bits */
68 
69   uint32_t USART_Parity;              /*!< Specifies the parity mode.
70                                            This parameter can be a value of @ref USART_Parity
71                                            @note When parity is enabled, the computed parity is inserted
72                                                  at the MSB position of the transmitted data (9th bit when
73                                                  the word length is set to 9 data bits; 8th bit when the
74                                                  word length is set to 8 data bits). */
75 
76   uint32_t USART_Mode;                /*!< Specifies wether the Receive or Transmit mode is enabled or disabled.
77                                            This parameter can be a value of @ref USART_Mode */
78 
79   uint32_t USART_HardwareFlowControl; /*!< Specifies wether the hardware flow control mode is enabled
80                                            or disabled.
81                                            This parameter can be a value of @ref USART_Hardware_Flow_Control*/
82 } USART_InitTypeDef;
83 
84 /**
85   * @brief  USART Clock Init Structure definition
86   */
87 
88 typedef struct
89 {
90   uint32_t USART_Clock;             /*!< Specifies whether the USART clock is enabled or disabled.
91                                          This parameter can be a value of @ref USART_Clock */
92 
93   uint32_t USART_CPOL;              /*!< Specifies the steady state of the serial clock.
94                                          This parameter can be a value of @ref USART_Clock_Polarity */
95 
96   uint32_t USART_CPHA;              /*!< Specifies the clock transition on which the bit capture is made.
97                                          This parameter can be a value of @ref USART_Clock_Phase */
98 
99   uint32_t USART_LastBit;           /*!< Specifies whether the clock pulse corresponding to the last transmitted
100                                          data bit (MSB) has to be output on the SCLK pin in synchronous mode.
101                                          This parameter can be a value of @ref USART_Last_Bit */
102 } USART_ClockInitTypeDef;
103 
104 /* Exported constants --------------------------------------------------------*/
105 
106 /** @defgroup USART_Exported_Constants
107   * @{
108   */
109 
110 #define IS_USART_ALL_PERIPH(PERIPH) (((PERIPH) == USART1) || \
111                                      ((PERIPH) == USART2) || \
112                                      ((PERIPH) == USART3))
113 
114 
115 /** @defgroup USART_Word_Length
116   * @{
117   */
118 
119 #define USART_WordLength_8b                  ((uint32_t)0x00000000)
120 #define USART_WordLength_9b                  USART_CR1_M
121 #define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WordLength_8b) || \
122                                       ((LENGTH) == USART_WordLength_9b))
123 /**
124   * @}
125   */
126 
127 /** @defgroup USART_Stop_Bits
128   * @{
129   */
130 
131 #define USART_StopBits_1                     ((uint32_t)0x00000000)
132 #define USART_StopBits_2                     USART_CR2_STOP_1
133 #define USART_StopBits_1_5                   (USART_CR2_STOP_0 | USART_CR2_STOP_1)
134 #define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_StopBits_1) || \
135                                      ((STOPBITS) == USART_StopBits_2) || \
136                                      ((STOPBITS) == USART_StopBits_1_5))
137 /**
138   * @}
139   */
140 
141 /** @defgroup USART_Parity
142   * @{
143   */
144 
145 #define USART_Parity_No                      ((uint32_t)0x00000000)
146 #define USART_Parity_Even                    USART_CR1_PCE
147 #define USART_Parity_Odd                     (USART_CR1_PCE | USART_CR1_PS)
148 #define IS_USART_PARITY(PARITY) (((PARITY) == USART_Parity_No) || \
149                                  ((PARITY) == USART_Parity_Even) || \
150                                  ((PARITY) == USART_Parity_Odd))
151 /**
152   * @}
153   */
154 
155 /** @defgroup USART_Mode
156   * @{
157   */
158 
159 #define USART_Mode_Rx                        USART_CR1_RE
160 #define USART_Mode_Tx                        USART_CR1_TE
161 #define IS_USART_MODE(MODE) ((((MODE) & (uint32_t)0xFFFFFFF3) == 0x00) && \
162                               ((MODE) != (uint32_t)0x00))
163 /**
164   * @}
165   */
166 
167 /** @defgroup USART_Hardware_Flow_Control
168   * @{
169   */
170 
171 #define USART_HardwareFlowControl_None       ((uint32_t)0x00000000)
172 #define USART_HardwareFlowControl_RTS        USART_CR3_RTSE
173 #define USART_HardwareFlowControl_CTS        USART_CR3_CTSE
174 #define USART_HardwareFlowControl_RTS_CTS    (USART_CR3_RTSE | USART_CR3_CTSE)
175 #define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)\
176                               (((CONTROL) == USART_HardwareFlowControl_None) || \
177                                ((CONTROL) == USART_HardwareFlowControl_RTS) || \
178                                ((CONTROL) == USART_HardwareFlowControl_CTS) || \
179                                ((CONTROL) == USART_HardwareFlowControl_RTS_CTS))
180 /**
181   * @}
182   */
183 
184 /** @defgroup USART_Clock
185   * @{
186   */
187 
188 #define USART_Clock_Disable                  ((uint32_t)0x00000000)
189 #define USART_Clock_Enable                   USART_CR2_CLKEN
190 #define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_Clock_Disable) || \
191                                ((CLOCK) == USART_Clock_Enable))
192 /**
193   * @}
194   */
195 
196 /** @defgroup USART_Clock_Polarity
197   * @{
198   */
199 
200 #define USART_CPOL_Low                       ((uint32_t)0x00000000)
201 #define USART_CPOL_High                      USART_CR2_CPOL
202 #define IS_USART_CPOL(CPOL) (((CPOL) == USART_CPOL_Low) || ((CPOL) == USART_CPOL_High))
203 
204 /**
205   * @}
206   */
207 
208 /** @defgroup USART_Clock_Phase
209   * @{
210   */
211 
212 #define USART_CPHA_1Edge                     ((uint32_t)0x00000000)
213 #define USART_CPHA_2Edge                     USART_CR2_CPHA
214 #define IS_USART_CPHA(CPHA) (((CPHA) == USART_CPHA_1Edge) || ((CPHA) == USART_CPHA_2Edge))
215 
216 /**
217   * @}
218   */
219 
220 /** @defgroup USART_Last_Bit
221   * @{
222   */
223 
224 #define USART_LastBit_Disable                ((uint32_t)0x00000000)
225 #define USART_LastBit_Enable                 USART_CR2_LBCL
226 #define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LastBit_Disable) || \
227                                    ((LASTBIT) == USART_LastBit_Enable))
228 /**
229   * @}
230   */
231 
232 /** @defgroup USART_DMA_Requests
233   * @{
234   */
235 
236 #define USART_DMAReq_Tx                      USART_CR3_DMAT
237 #define USART_DMAReq_Rx                      USART_CR3_DMAR
238 #define IS_USART_DMAREQ(DMAREQ) ((((DMAREQ) & (uint32_t)0xFFFFFF3F) == 0x00) && \
239                                   ((DMAREQ) != (uint32_t)0x00))
240 
241 /**
242   * @}
243   */
244 
245 /** @defgroup USART_DMA_Recception_Error
246   * @{
247   */
248 
249 #define USART_DMAOnError_Enable              ((uint32_t)0x00000000)
250 #define USART_DMAOnError_Disable             USART_CR3_DDRE
251 #define IS_USART_DMAONERROR(DMAERROR) (((DMAERROR) == USART_DMAOnError_Disable)|| \
252                                        ((DMAERROR) == USART_DMAOnError_Enable))
253 /**
254   * @}
255   */
256 
257 /** @defgroup USART_MuteMode_WakeUp_methods
258   * @{
259   */
260 
261 #define USART_WakeUp_IdleLine                ((uint32_t)0x00000000)
262 #define USART_WakeUp_AddressMark             USART_CR1_WAKE
263 #define IS_USART_MUTEMODE_WAKEUP(WAKEUP) (((WAKEUP) == USART_WakeUp_IdleLine) || \
264                                           ((WAKEUP) == USART_WakeUp_AddressMark))
265 /**
266   * @}
267   */
268 
269 /** @defgroup USART_Address_Detection
270   * @{
271   */
272 
273 #define USART_AddressLength_4b               ((uint32_t)0x00000000)
274 #define USART_AddressLength_7b               USART_CR2_ADDM7
275 #define IS_USART_ADDRESS_DETECTION(ADDRESS) (((ADDRESS) == USART_AddressLength_4b) || \
276                                              ((ADDRESS) == USART_AddressLength_7b))
277 /**
278   * @}
279   */
280 
281 /** @defgroup USART_StopMode_WakeUp_methods
282   * @{
283   */
284 
285 #define USART_WakeUpSource_AddressMatch      ((uint32_t)0x00000000)
286 #define USART_WakeUpSource_StartBit          USART_CR3_WUS_1
287 #define USART_WakeUpSource_RXNE              (USART_CR3_WUS_0 | USART_CR3_WUS_1)
288 #define IS_USART_STOPMODE_WAKEUPSOURCE(SOURCE) (((SOURCE) == USART_WakeUpSource_AddressMatch) || \
289                                                 ((SOURCE) == USART_WakeUpSource_StartBit) || \
290                                                 ((SOURCE) == USART_WakeUpSource_RXNE))
291 /**
292   * @}
293   */
294 
295 /** @defgroup USART_LIN_Break_Detection_Length
296   * @{
297   */
298 
299 #define USART_LINBreakDetectLength_10b       ((uint32_t)0x00000000)
300 #define USART_LINBreakDetectLength_11b       USART_CR2_LBDL
301 #define IS_USART_LIN_BREAK_DETECT_LENGTH(LENGTH) \
302                                (((LENGTH) == USART_LINBreakDetectLength_10b) || \
303                                 ((LENGTH) == USART_LINBreakDetectLength_11b))
304 /**
305   * @}
306   */
307 
308 /** @defgroup USART_IrDA_Low_Power
309   * @{
310   */
311 
312 #define USART_IrDAMode_LowPower              USART_CR3_IRLP
313 #define USART_IrDAMode_Normal                ((uint32_t)0x00000000)
314 #define IS_USART_IRDA_MODE(MODE) (((MODE) == USART_IrDAMode_LowPower) || \
315                                   ((MODE) == USART_IrDAMode_Normal))
316 /**
317   * @}
318   */
319 
320 /** @defgroup USART_DE_Polarity
321   * @{
322   */
323 
324 #define USART_DEPolarity_High                ((uint32_t)0x00000000)
325 #define USART_DEPolarity_Low                 USART_CR3_DEP
326 #define IS_USART_DE_POLARITY(POLARITY) (((POLARITY) == USART_DEPolarity_Low) || \
327                                         ((POLARITY) == USART_DEPolarity_High))
328 /**
329   * @}
330   */
331 
332 /** @defgroup USART_Inversion_Pins
333   * @{
334   */
335 
336 #define USART_InvPin_Tx                      USART_CR2_TXINV
337 #define USART_InvPin_Rx                      USART_CR2_RXINV
338 #define IS_USART_INVERSTION_PIN(PIN) ((((PIN) & (uint32_t)0xFFFCFFFF) == 0x00) && \
339                                        ((PIN) != (uint32_t)0x00))
340 
341 /**
342   * @}
343   */
344 
345 /** @defgroup USART_AutoBaudRate_Mode
346   * @{
347   */
348 
349 #define USART_AutoBaudRate_StartBit          ((uint32_t)0x00000000)
350 #define USART_AutoBaudRate_FallingEdge       USART_CR2_ABRMODE_0
351 #define IS_USART_AUTOBAUDRATE_MODE(MODE) (((MODE) == USART_AutoBaudRate_StartBit) || \
352                                           ((MODE) == USART_AutoBaudRate_FallingEdge))
353 /**
354   * @}
355   */
356 
357 /** @defgroup USART_OVR_DETECTION
358   * @{
359   */
360 
361 #define USART_OVRDetection_Enable            ((uint32_t)0x00000000)
362 #define USART_OVRDetection_Disable           USART_CR3_OVRDIS
363 #define IS_USART_OVRDETECTION(OVR) (((OVR) == USART_OVRDetection_Enable)|| \
364                                     ((OVR) == USART_OVRDetection_Disable))
365 /**
366   * @}
367   */
368 /** @defgroup USART_Request
369   * @{
370   */
371 
372 #define USART_Request_ABRRQ                  USART_RQR_ABRRQ
373 #define USART_Request_SBKRQ                  USART_RQR_SBKRQ
374 #define USART_Request_MMRQ                   USART_RQR_MMRQ
375 #define USART_Request_RXFRQ                  USART_RQR_RXFRQ
376 #define USART_Request_TXFRQ                  USART_RQR_TXFRQ
377 
378 #define IS_USART_REQUEST(REQUEST) (((REQUEST) == USART_Request_TXFRQ) || \
379                                    ((REQUEST) == USART_Request_RXFRQ) || \
380                                    ((REQUEST) == USART_Request_MMRQ) || \
381                                    ((REQUEST) == USART_Request_SBKRQ) || \
382                                    ((REQUEST) == USART_Request_ABRRQ))
383 /**
384   * @}
385   */
386 
387 /** @defgroup USART_Flags
388   * @{
389   */
390 #define USART_FLAG_REACK                     USART_ISR_REACK
391 #define USART_FLAG_TEACK                     USART_ISR_TEACK
392 #define USART_FLAG_WU                        USART_ISR_WUF
393 #define USART_FLAG_RWU                       USART_ISR_RWU
394 #define USART_FLAG_SBK                       USART_ISR_SBKF
395 #define USART_FLAG_CM                        USART_ISR_CMF
396 #define USART_FLAG_BUSY                      USART_ISR_BUSY
397 #define USART_FLAG_ABRF                      USART_ISR_ABRF
398 #define USART_FLAG_ABRE                      USART_ISR_ABRE
399 #define USART_FLAG_EOB                       USART_ISR_EOBF
400 #define USART_FLAG_RTO                       USART_ISR_RTOF
401 #define USART_FLAG_nCTSS                     USART_ISR_CTS
402 #define USART_FLAG_CTS                       USART_ISR_CTSIF
403 #define USART_FLAG_LBD                       USART_ISR_LBD
404 #define USART_FLAG_TXE                       USART_ISR_TXE
405 #define USART_FLAG_TC                        USART_ISR_TC
406 #define USART_FLAG_RXNE                      USART_ISR_RXNE
407 #define USART_FLAG_IDLE                      USART_ISR_IDLE
408 #define USART_FLAG_ORE                       USART_ISR_ORE
409 #define USART_FLAG_NE                        USART_ISR_NE
410 #define USART_FLAG_FE                        USART_ISR_FE
411 #define USART_FLAG_PE                        USART_ISR_PE
412 #define IS_USART_FLAG(FLAG) (((FLAG) == USART_FLAG_PE) || ((FLAG) == USART_FLAG_TXE) || \
413                              ((FLAG) == USART_FLAG_TC) || ((FLAG) == USART_FLAG_RXNE) || \
414                              ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_LBD) || \
415                              ((FLAG) == USART_FLAG_CTS) || ((FLAG) == USART_FLAG_ORE) || \
416                              ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE) || \
417                              ((FLAG) == USART_FLAG_nCTSS) || ((FLAG) == USART_FLAG_RTO) || \
418                              ((FLAG) == USART_FLAG_EOB) || ((FLAG) == USART_FLAG_ABRE) || \
419                              ((FLAG) == USART_FLAG_ABRF) || ((FLAG) == USART_FLAG_BUSY) || \
420                              ((FLAG) == USART_FLAG_CM) || ((FLAG) == USART_FLAG_SBK) || \
421                              ((FLAG) == USART_FLAG_RWU) || ((FLAG) == USART_FLAG_WU) || \
422                              ((FLAG) == USART_FLAG_TEACK)|| ((FLAG) == USART_FLAG_REACK))
423 
424 #define IS_USART_CLEAR_FLAG(FLAG) (((FLAG) == USART_FLAG_WU) || ((FLAG) == USART_FLAG_TC) || \
425                                    ((FLAG) == USART_FLAG_IDLE) || ((FLAG) == USART_FLAG_ORE) || \
426                                    ((FLAG) == USART_FLAG_NE) || ((FLAG) == USART_FLAG_FE) || \
427                                    ((FLAG) == USART_FLAG_LBD) || ((FLAG) == USART_FLAG_CTS) || \
428                                    ((FLAG) == USART_FLAG_RTO) || ((FLAG) == USART_FLAG_EOB) || \
429                                    ((FLAG) == USART_FLAG_CM) || ((FLAG) == USART_FLAG_PE))
430 /**
431   * @}
432   */
433 
434 /** @defgroup USART_Interrupt_definition
435   * @brief USART Interrupt definition
436   * USART_IT possible values
437   * Elements values convention: 0xZZZZYYXX
438   *   XX: Position of the corresponding Interrupt
439   *   YY: Register index
440   *   ZZZZ: Flag position
441   * @{
442   */
443 
444 #define USART_IT_WU                          ((uint32_t)0x00140316)
445 #define USART_IT_CM                          ((uint32_t)0x0011010E)
446 #define USART_IT_EOB                         ((uint32_t)0x000C011B)
447 #define USART_IT_RTO                         ((uint32_t)0x000B011A)
448 #define USART_IT_PE                          ((uint32_t)0x00000108)
449 #define USART_IT_TXE                         ((uint32_t)0x00070107)
450 #define USART_IT_TC                          ((uint32_t)0x00060106)
451 #define USART_IT_RXNE                        ((uint32_t)0x00050105)
452 #define USART_IT_IDLE                        ((uint32_t)0x00040104)
453 #define USART_IT_LBD                         ((uint32_t)0x00080206)
454 #define USART_IT_CTS                         ((uint32_t)0x0009030A)
455 #define USART_IT_ERR                         ((uint32_t)0x00000300)
456 #define USART_IT_ORE                         ((uint32_t)0x00030300)
457 #define USART_IT_NE                          ((uint32_t)0x00020300)
458 #define USART_IT_FE                          ((uint32_t)0x00010300)
459 
460 #define IS_USART_CONFIG_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \
461                                 ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \
462                                 ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \
463                                 ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ERR) || \
464                                 ((IT) == USART_IT_RTO) || ((IT) == USART_IT_EOB) || \
465                                 ((IT) == USART_IT_CM) || ((IT) == USART_IT_WU))
466 
467 #define IS_USART_GET_IT(IT) (((IT) == USART_IT_PE) || ((IT) == USART_IT_TXE) || \
468                              ((IT) == USART_IT_TC) || ((IT) == USART_IT_RXNE) || \
469                              ((IT) == USART_IT_IDLE) || ((IT) == USART_IT_LBD) || \
470                              ((IT) == USART_IT_CTS) || ((IT) == USART_IT_ORE) || \
471                              ((IT) == USART_IT_NE) || ((IT) == USART_IT_FE) || \
472                              ((IT) == USART_IT_RTO) || ((IT) == USART_IT_EOB) || \
473                              ((IT) == USART_IT_CM) || ((IT) == USART_IT_WU))
474 
475 #define IS_USART_CLEAR_IT(IT) (((IT) == USART_IT_TC) || ((IT) == USART_IT_PE) || \
476                                ((IT) == USART_IT_FE) || ((IT) == USART_IT_NE) || \
477                                ((IT) == USART_IT_ORE) || ((IT) == USART_IT_IDLE) || \
478                                ((IT) == USART_IT_LBD) || ((IT) == USART_IT_CTS) || \
479                                ((IT) == USART_IT_RTO) || ((IT) == USART_IT_EOB) || \
480                                ((IT) == USART_IT_CM) || ((IT) == USART_IT_WU))
481 /**
482   * @}
483   */
484 
485 /** @defgroup USART_Global_definition
486   * @{
487   */
488 
489 #define IS_USART_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0) && ((BAUDRATE) < 0x005B8D81))
490 #define IS_USART_DE_ASSERTION_DEASSERTION_TIME(TIME) ((TIME) <= 0x1F)
491 #define IS_USART_AUTO_RETRY_COUNTER(COUNTER) ((COUNTER) <= 0x7)
492 #define IS_USART_TIMEOUT(TIMEOUT) ((TIMEOUT) <= 0x00FFFFFF)
493 #define IS_USART_DATA(DATA) ((DATA) <= 0x1FF)
494 
495 /**
496   * @}
497   */
498 
499 /**
500   * @}
501   */
502 
503 /* Exported macro ------------------------------------------------------------*/
504 /* Exported functions ------------------------------------------------------- */
505 
506 /* Initialization and Configuration functions *********************************/
507 void USART_DeInit(USART_TypeDef* USARTx);
508 void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
509 void USART_StructInit(USART_InitTypeDef* USART_InitStruct);
510 void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
511 void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);
512 void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
513 void USART_DirectionModeCmd(USART_TypeDef* USARTx, uint32_t USART_DirectionMode, FunctionalState NewState);
514 void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler);
515 void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
516 void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState);
517 void USART_MSBFirstCmd(USART_TypeDef* USARTx, FunctionalState NewState);
518 void USART_DataInvCmd(USART_TypeDef* USARTx, FunctionalState NewState);
519 void USART_InvPinCmd(USART_TypeDef* USARTx, uint32_t USART_InvPin, FunctionalState NewState);
520 void USART_SWAPPinCmd(USART_TypeDef* USARTx, FunctionalState NewState);
521 void USART_ReceiverTimeOutCmd(USART_TypeDef* USARTx, FunctionalState NewState);
522 void USART_SetReceiverTimeOut(USART_TypeDef* USARTx, uint32_t USART_ReceiverTimeOut);
523 
524 /* STOP Mode functions ********************************************************/
525 void USART_STOPModeCmd(USART_TypeDef* USARTx, FunctionalState NewState);
526 void USART_StopModeWakeUpSourceConfig(USART_TypeDef* USARTx, uint32_t USART_WakeUpSource);
527 
528 /* AutoBaudRate functions *****************************************************/
529 void USART_AutoBaudRateCmd(USART_TypeDef* USARTx, FunctionalState NewState);
530 void USART_AutoBaudRateConfig(USART_TypeDef* USARTx, uint32_t USART_AutoBaudRate);
531 
532 /* Data transfers functions ***************************************************/
533 void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
534 uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
535 
536 /* Multi-Processor Communication functions ************************************/
537 void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address);
538 void USART_MuteModeWakeUpConfig(USART_TypeDef* USARTx, uint32_t USART_WakeUp);
539 void USART_MuteModeCmd(USART_TypeDef* USARTx, FunctionalState NewState);
540 void USART_AddressDetectionConfig(USART_TypeDef* USARTx, uint32_t USART_AddressLength);
541 /* LIN mode functions *********************************************************/
542 void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint32_t USART_LINBreakDetectLength);
543 void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState);
544 
545 /* Half-duplex mode function **************************************************/
546 void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState);
547 
548 /* Smartcard mode functions ***************************************************/
549 void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState);
550 void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState);
551 void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime);
552 void USART_SetAutoRetryCount(USART_TypeDef* USARTx, uint8_t USART_AutoCount);
553 void USART_SetBlockLength(USART_TypeDef* USARTx, uint8_t USART_BlockLength);
554 
555 /* IrDA mode functions ********************************************************/
556 void USART_IrDAConfig(USART_TypeDef* USARTx, uint32_t USART_IrDAMode);
557 void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState);
558 
559 /* RS485 mode functions *******************************************************/
560 void USART_DECmd(USART_TypeDef* USARTx, FunctionalState NewState);
561 void USART_DEPolarityConfig(USART_TypeDef* USARTx, uint32_t USART_DEPolarity);
562 void USART_SetDEAssertionTime(USART_TypeDef* USARTx, uint32_t USART_DEAssertionTime);
563 void USART_SetDEDeassertionTime(USART_TypeDef* USARTx, uint32_t USART_DEDeassertionTime);
564 
565 /* DMA transfers management functions *****************************************/
566 void USART_DMACmd(USART_TypeDef* USARTx, uint32_t USART_DMAReq, FunctionalState NewState);
567 void USART_DMAReceptionErrorConfig(USART_TypeDef* USARTx, uint32_t USART_DMAOnError);
568 
569 /* Interrupts and flags management functions **********************************/
570 void USART_ITConfig(USART_TypeDef* USARTx, uint32_t USART_IT, FunctionalState NewState);
571 void USART_RequestCmd(USART_TypeDef* USARTx, uint32_t USART_Request, FunctionalState NewState);
572 void USART_OverrunDetectionConfig(USART_TypeDef* USARTx, uint32_t USART_OVRDetection);
573 FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint32_t USART_FLAG);
574 void USART_ClearFlag(USART_TypeDef* USARTx, uint32_t USART_FLAG);
575 ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint32_t USART_IT);
576 void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint32_t USART_IT);
577 
578 #ifdef __cplusplus
579 }
580 #endif
581 
582 #endif /* __STM32F37X_USART_H */
583 
584 /**
585   * @}
586   */
587 
588 /**
589   * @}
590   */
591 
592 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
593