]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL/ST_Library/include/stm32f7xx_hal_usart.h
Update version number ready for V8.2.1 release.
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL / ST_Library / include / stm32f7xx_hal_usart.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_usart.h\r
4   * @author  MCD Application Team\r
5   * @version V0.3.0\r
6   * @date    06-March-2015\r
7   * @brief   Header file of USART HAL module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>\r
12   *\r
13   * Redistribution and use in source and binary forms, with or without modification,\r
14   * are permitted provided that the following conditions are met:\r
15   *   1. Redistributions of source code must retain the above copyright notice,\r
16   *      this list of conditions and the following disclaimer.\r
17   *   2. Redistributions in binary form must reproduce the above copyright notice,\r
18   *      this list of conditions and the following disclaimer in the documentation\r
19   *      and/or other materials provided with the distribution.\r
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors\r
21   *      may be used to endorse or promote products derived from this software\r
22   *      without specific prior written permission.\r
23   *\r
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34   *\r
35   ******************************************************************************\r
36   */ \r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F7xx_HAL_USART_H\r
40 #define __STM32F7xx_HAL_USART_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #include "stm32f7xx_hal_def.h"\r
48 \r
49 /** @addtogroup STM32F7xx_HAL_Driver\r
50   * @{\r
51   */\r
52 \r
53 /** @addtogroup USART\r
54   * @{\r
55   */\r
56 \r
57 /* Exported types ------------------------------------------------------------*/\r
58 /** @defgroup USART_Exported_Types USART Exported Types\r
59   * @{\r
60   */\r
61 \r
62 /**\r
63   * @brief USART Init Structure definition\r
64   */\r
65 typedef struct\r
66 {\r
67   uint32_t BaudRate;                  /*!< This member configures the Usart communication baud rate.\r
68                                            The baud rate is computed using the following formula:\r
69                                               Baud Rate Register = ((PCLKx) / ((huart->Init.BaudRate))) */\r
70 \r
71   uint32_t WordLength;                /*!< Specifies the number of data bits transmitted or received in a frame.\r
72                                            This parameter can be a value of @ref USARTEx_Word_Length */\r
73 \r
74   uint32_t StopBits;                  /*!< Specifies the number of stop bits transmitted.\r
75                                            This parameter can be a value of @ref USART_Stop_Bits */\r
76 \r
77   uint32_t Parity;                   /*!< Specifies the parity mode.\r
78                                            This parameter can be a value of @ref USART_Parity\r
79                                            @note When parity is enabled, the computed parity is inserted\r
80                                                  at the MSB position of the transmitted data (9th bit when\r
81                                                  the word length is set to 9 data bits; 8th bit when the\r
82                                                  word length is set to 8 data bits). */\r
83 \r
84   uint32_t Mode;                      /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.\r
85                                            This parameter can be a value of @ref USART_Mode */\r
86 \r
87   uint32_t OverSampling;              /*!< Specifies whether the Over sampling 8 is enabled or disabled, to achieve higher speed (up to fPCLK/8).\r
88                                            This parameter can be a value of @ref USART_Over_Sampling */                                                                                        \r
89 \r
90   uint32_t CLKPolarity;               /*!< Specifies the steady state of the serial clock.\r
91                                            This parameter can be a value of @ref USART_Clock_Polarity */\r
92 \r
93   uint32_t CLKPhase;                  /*!< Specifies the clock transition on which the bit capture is made.\r
94                                            This parameter can be a value of @ref USART_Clock_Phase */\r
95 \r
96   uint32_t CLKLastBit;                /*!< Specifies whether the clock pulse corresponding to the last transmitted\r
97                                            data bit (MSB) has to be output on the SCLK pin in synchronous mode.\r
98                                            This parameter can be a value of @ref USART_Last_Bit */\r
99 }USART_InitTypeDef;\r
100 \r
101 /**\r
102   * @brief HAL USART State structures definition\r
103   */\r
104 typedef enum\r
105 {\r
106   HAL_USART_STATE_RESET             = 0x00,    /*!< Peripheral is not initialized   */\r
107   HAL_USART_STATE_READY             = 0x01,    /*!< Peripheral Initialized and ready for use */\r
108   HAL_USART_STATE_BUSY              = 0x02,    /*!< an internal process is ongoing */\r
109   HAL_USART_STATE_BUSY_TX           = 0x12,    /*!< Data Transmission process is ongoing */\r
110   HAL_USART_STATE_BUSY_RX           = 0x22,    /*!< Data Reception process is ongoing */\r
111   HAL_USART_STATE_BUSY_TX_RX        = 0x32,    /*!< Data Transmission Reception process is ongoing */\r
112   HAL_USART_STATE_TIMEOUT           = 0x03,    /*!< Timeout state */\r
113   HAL_USART_STATE_ERROR             = 0x04     /*!< Error */\r
114 }HAL_USART_StateTypeDef;\r
115 \r
116 \r
117 /**\r
118   * @brief  USART clock sources definitions\r
119   */\r
120 typedef enum\r
121 {\r
122   USART_CLOCKSOURCE_PCLK1      = 0x00,    /*!< PCLK1 clock source  */\r
123   USART_CLOCKSOURCE_PCLK2      = 0x01,    /*!< PCLK2 clock source  */\r
124   USART_CLOCKSOURCE_HSI        = 0x02,    /*!< HSI clock source    */\r
125   USART_CLOCKSOURCE_SYSCLK     = 0x04,    /*!< SYSCLK clock source */\r
126   USART_CLOCKSOURCE_LSE        = 0x08,    /*!< LSE clock source       */\r
127   USART_CLOCKSOURCE_UNDEFINED  = 0x10     /*!< Undefined clock source */\r
128 }USART_ClockSourceTypeDef;\r
129 \r
130 \r
131 /**\r
132   * @brief  USART handle Structure definition\r
133   */\r
134 typedef struct\r
135 {\r
136   USART_TypeDef                 *Instance;        /*!<  USART registers base address        */\r
137 \r
138   USART_InitTypeDef             Init;             /*!< USART communication parameters      */\r
139 \r
140   uint8_t                       *pTxBuffPtr;      /*!< Pointer to USART Tx transfer Buffer */\r
141 \r
142   uint16_t                      TxXferSize;       /*!< USART Tx Transfer size              */\r
143 \r
144   uint16_t                      TxXferCount;      /*!< USART Tx Transfer Counter           */\r
145 \r
146   uint8_t                       *pRxBuffPtr;      /*!< Pointer to USART Rx transfer Buffer */\r
147 \r
148   uint16_t                      RxXferSize;       /*!< USART Rx Transfer size              */\r
149 \r
150   uint16_t                      RxXferCount;      /*!< USART Rx Transfer Counter           */\r
151 \r
152   uint16_t                      Mask;             /*!< USART Rx RDR register mask          */\r
153 \r
154   DMA_HandleTypeDef             *hdmatx;          /*!< USART Tx DMA Handle parameters      */\r
155 \r
156   DMA_HandleTypeDef             *hdmarx;          /*!< USART Rx DMA Handle parameters      */\r
157 \r
158   HAL_LockTypeDef               Lock;            /*!<  Locking object                      */\r
159 \r
160   HAL_USART_StateTypeDef        State;           /*!< USART communication state           */\r
161 \r
162   __IO uint32_t                 ErrorCode;       /*!< USART Error code                    */\r
163 \r
164 }USART_HandleTypeDef;\r
165 /**\r
166   * @}\r
167   */\r
168 \r
169 /* Exported constants --------------------------------------------------------*/\r
170 /** @defgroup USART_Exported_Constants USART Exported Constants\r
171   * @{\r
172   */\r
173 \r
174 /** @defgroup USART_Error_Code USART Error Code\r
175   * @brief    USART Error Code \r
176   * @{\r
177   */ \r
178 #define HAL_USART_ERROR_NONE         ((uint32_t)0x00000000)   /*!< No error            */\r
179 #define HAL_USART_ERROR_PE           ((uint32_t)0x00000001)   /*!< Parity error        */\r
180 #define HAL_USART_ERROR_NE           ((uint32_t)0x00000002)   /*!< Noise error         */\r
181 #define HAL_USART_ERROR_FE           ((uint32_t)0x00000004)   /*!< Frame error         */\r
182 #define HAL_USART_ERROR_ORE          ((uint32_t)0x00000008)   /*!< Overrun error       */\r
183 #define HAL_USART_ERROR_DMA          ((uint32_t)0x00000010)   /*!< DMA transfer error  */\r
184 /**\r
185   * @}\r
186   */\r
187 \r
188 /** @defgroup USART_Stop_Bits  USART Number of Stop Bits\r
189   * @{\r
190   */\r
191 #define USART_STOPBITS_1                     ((uint32_t)0x0000)\r
192 #define USART_STOPBITS_2                     ((uint32_t)USART_CR2_STOP_1)\r
193 #define USART_STOPBITS_1_5                   ((uint32_t)(USART_CR2_STOP_0 | USART_CR2_STOP_1))\r
194 /**\r
195   * @}\r
196   */\r
197 \r
198 /** @defgroup USART_Parity    USART Parity\r
199   * @{\r
200   */\r
201 #define USART_PARITY_NONE                   ((uint32_t)0x0000)\r
202 #define USART_PARITY_EVEN                   ((uint32_t)USART_CR1_PCE)\r
203 #define USART_PARITY_ODD                    ((uint32_t)(USART_CR1_PCE | USART_CR1_PS))\r
204 /**\r
205   * @}\r
206   */\r
207 \r
208 /** @defgroup USART_Mode   USART Mode\r
209   * @{\r
210   */\r
211 #define USART_MODE_RX                       ((uint32_t)USART_CR1_RE)\r
212 #define USART_MODE_TX                       ((uint32_t)USART_CR1_TE)\r
213 #define USART_MODE_TX_RX                    ((uint32_t)(USART_CR1_TE |USART_CR1_RE))\r
214 /**\r
215   * @}\r
216   */\r
217 \r
218 /** @defgroup USART_Over_Sampling USART Over Sampling\r
219   * @{\r
220   */\r
221 #define USART_OVERSAMPLING_16               ((uint32_t)0x0000)\r
222 #define USART_OVERSAMPLING_8                ((uint32_t)USART_CR1_OVER8)\r
223 /**\r
224   * @}\r
225   */\r
226 /** @defgroup USART_Clock  USART Clock\r
227   * @{\r
228   */\r
229 #define USART_CLOCK_DISABLE                 ((uint32_t)0x0000)\r
230 #define USART_CLOCK_ENABLE                  ((uint32_t)USART_CR2_CLKEN)\r
231 /**\r
232   * @}\r
233   */\r
234 \r
235 /** @defgroup USART_Clock_Polarity  USART Clock Polarity\r
236   * @{\r
237   */\r
238 #define USART_POLARITY_LOW                  ((uint32_t)0x0000)\r
239 #define USART_POLARITY_HIGH                 ((uint32_t)USART_CR2_CPOL)\r
240 /**\r
241   * @}\r
242   */\r
243 \r
244 /** @defgroup USART_Clock_Phase   USART Clock Phase\r
245   * @{\r
246   */\r
247 #define USART_PHASE_1EDGE                   ((uint32_t)0x0000)\r
248 #define USART_PHASE_2EDGE                   ((uint32_t)USART_CR2_CPHA)\r
249 /**\r
250   * @}\r
251   */\r
252 \r
253 /** @defgroup USART_Last_Bit  USART Last Bit\r
254   * @{\r
255   */\r
256 #define USART_LASTBIT_DISABLE               ((uint32_t)0x0000)\r
257 #define USART_LASTBIT_ENABLE                ((uint32_t)USART_CR2_LBCL)\r
258 /**\r
259   * @}\r
260   */\r
261 \r
262 /** @defgroup USART_Request_Parameters  USART Request Parameters\r
263   * @{\r
264   */\r
265 #define USART_RXDATA_FLUSH_REQUEST        ((uint32_t)USART_RQR_RXFRQ)        /*!< Receive Data flush Request */ \r
266 #define USART_TXDATA_FLUSH_REQUEST        ((uint32_t)USART_RQR_TXFRQ)        /*!< Transmit data flush Request */\r
267 /**\r
268   * @}\r
269   */\r
270 \r
271 /** @defgroup USART_Flags      USART Flags\r
272   *        Elements values convention: 0xXXXX\r
273   *           - 0xXXXX  : Flag mask in the ISR register\r
274   * @{\r
275   */\r
276 #define USART_FLAG_REACK                     ((uint32_t)0x00400000)\r
277 #define USART_FLAG_TEACK                     ((uint32_t)0x00200000)  \r
278 #define USART_FLAG_BUSY                      ((uint32_t)0x00010000)\r
279 #define USART_FLAG_CTS                       ((uint32_t)0x00000400)\r
280 #define USART_FLAG_CTSIF                     ((uint32_t)0x00000200)\r
281 #define USART_FLAG_LBDF                      ((uint32_t)0x00000100)\r
282 #define USART_FLAG_TXE                       ((uint32_t)0x00000080)\r
283 #define USART_FLAG_TC                        ((uint32_t)0x00000040)\r
284 #define USART_FLAG_RXNE                      ((uint32_t)0x00000020)\r
285 #define USART_FLAG_IDLE                      ((uint32_t)0x00000010)\r
286 #define USART_FLAG_ORE                       ((uint32_t)0x00000008)\r
287 #define USART_FLAG_NE                        ((uint32_t)0x00000004)\r
288 #define USART_FLAG_FE                        ((uint32_t)0x00000002)\r
289 #define USART_FLAG_PE                        ((uint32_t)0x00000001)\r
290 /**\r
291   * @}\r
292   */\r
293 \r
294 /** @defgroup USART_Interrupt_definition USART Interrupts Definition\r
295   *        Elements values convention: 0000ZZZZ0XXYYYYYb\r
296   *           - YYYYY  : Interrupt source position in the XX register (5bits)\r
297   *           - XX  : Interrupt source register (2bits)\r
298   *                 - 01: CR1 register\r
299   *                 - 10: CR2 register\r
300   *                 - 11: CR3 register\r
301   *           - ZZZZ  : Flag position in the ISR register(4bits)\r
302   * @{\r
303   */\r
304 \r
305 #define USART_IT_PE                          ((uint16_t)0x0028)\r
306 #define USART_IT_TXE                         ((uint16_t)0x0727)\r
307 #define USART_IT_TC                          ((uint16_t)0x0626)\r
308 #define USART_IT_RXNE                        ((uint16_t)0x0525)\r
309 #define USART_IT_IDLE                        ((uint16_t)0x0424)\r
310 #define USART_IT_ERR                         ((uint16_t)0x0060)\r
311 \r
312 #define USART_IT_ORE                         ((uint16_t)0x0300)\r
313 #define USART_IT_NE                          ((uint16_t)0x0200)\r
314 #define USART_IT_FE                          ((uint16_t)0x0100)\r
315 /**\r
316   * @}\r
317   */\r
318 \r
319 /** @defgroup USART_IT_CLEAR_Flags    USART Interruption Clear Flags\r
320   * @{\r
321   */\r
322 #define USART_CLEAR_PEF                       USART_ICR_PECF            /*!< Parity Error Clear Flag */\r
323 #define USART_CLEAR_FEF                       USART_ICR_FECF            /*!< Framing Error Clear Flag */\r
324 #define USART_CLEAR_NEF                       USART_ICR_NCF             /*!< Noise detected Clear Flag */\r
325 #define USART_CLEAR_OREF                      USART_ICR_ORECF           /*!< OverRun Error Clear Flag */\r
326 #define USART_CLEAR_IDLEF                     USART_ICR_IDLECF          /*!< IDLE line detected Clear Flag */\r
327 #define USART_CLEAR_TCF                       USART_ICR_TCCF            /*!< Transmission Complete Clear Flag */\r
328 #define USART_CLEAR_CTSF                      USART_ICR_CTSCF           /*!< CTS Interrupt Clear Flag */\r
329 /**\r
330   * @}\r
331   */\r
332 \r
333 /**\r
334   * @}\r
335   */\r
336 \r
337 /* Exported macros -----------------------------------------------------------*/\r
338 /** @defgroup USART_Exported_Macros USART Exported Macros\r
339   * @{\r
340   */\r
341 \r
342 /** @brief Reset USART handle state\r
343   * @param  __HANDLE__: USART handle.\r
344   * @retval None\r
345   */\r
346 #define __HAL_USART_RESET_HANDLE_STATE(__HANDLE__)  ((__HANDLE__)->State = HAL_USART_STATE_RESET)\r
347 \r
348 /** @brief  Checks whether the specified USART flag is set or not.\r
349   * @param  __HANDLE__: specifies the USART Handle\r
350   * @param  __FLAG__: specifies the flag to check.\r
351   *        This parameter can be one of the following values:\r
352   *            @arg USART_FLAG_REACK: Receive enable acknowledge flag\r
353   *            @arg USART_FLAG_TEACK: Transmit enable acknowledge flag\r
354   *            @arg USART_FLAG_BUSY:  Busy flag\r
355   *            @arg USART_FLAG_CTS:   CTS Change flag\r
356   *            @arg USART_FLAG_TXE:   Transmit data register empty flag\r
357   *            @arg USART_FLAG_TC:    Transmission Complete flag\r
358   *            @arg USART_FLAG_RXNE:  Receive data register not empty flag\r
359   *            @arg USART_FLAG_IDLE:  Idle Line detection flag\r
360   *            @arg USART_FLAG_ORE:   OverRun Error flag\r
361   *            @arg USART_FLAG_NE:    Noise Error flag\r
362   *            @arg USART_FLAG_FE:    Framing Error flag\r
363   *            @arg USART_FLAG_PE:    Parity Error flag\r
364   * @retval The new state of __FLAG__ (TRUE or FALSE).\r
365   */\r
366 #define __HAL_USART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->ISR & (__FLAG__)) == (__FLAG__))\r
367 \r
368 \r
369 /** @brief  Enables the specified USART interrupt.\r
370   * @param  __HANDLE__: specifies the USART Handle\r
371   * @param  __INTERRUPT__: specifies the USART interrupt source to enable.\r
372   *          This parameter can be one of the following values:\r
373   *            @arg USART_IT_TXE:  Transmit Data Register empty interrupt\r
374   *            @arg USART_IT_TC:   Transmission complete interrupt\r
375   *            @arg USART_IT_RXNE: Receive Data register not empty interrupt\r
376   *            @arg USART_IT_IDLE: Idle line detection interrupt\r
377   *            @arg USART_IT_PE:   Parity Error interrupt\r
378   *            @arg USART_IT_ERR:  Error interrupt(Frame error, noise error, overrun error)\r
379   * @retval None\r
380   */\r
381 #define __HAL_USART_ENABLE_IT(__HANDLE__, __INTERRUPT__)   (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 |= (1U << ((__INTERRUPT__) & USART_IT_MASK))): \\r
382                                                             ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 |= (1U << ((__INTERRUPT__) & USART_IT_MASK))): \\r
383                                                             ((__HANDLE__)->Instance->CR3 |= (1U << ((__INTERRUPT__) & USART_IT_MASK))))\r
384 \r
385 /** @brief  Disables the specified USART interrupt.\r
386   * @param  __HANDLE__: specifies the USART Handle.\r
387   * @param  __INTERRUPT__: specifies the USART interrupt source to disable.\r
388   *          This parameter can be one of the following values:\r
389   *            @arg USART_IT_TXE:  Transmit Data Register empty interrupt\r
390   *            @arg USART_IT_TC:   Transmission complete interrupt\r
391   *            @arg USART_IT_RXNE: Receive Data register not empty interrupt\r
392   *            @arg USART_IT_IDLE: Idle line detection interrupt\r
393   *            @arg USART_IT_PE:   Parity Error interrupt\r
394   *            @arg USART_IT_ERR:  Error interrupt(Frame error, noise error, overrun error)\r
395   * @retval None\r
396   */\r
397 #define __HAL_USART_DISABLE_IT(__HANDLE__, __INTERRUPT__)  (((((uint8_t)(__INTERRUPT__)) >> 5U) == 1)? ((__HANDLE__)->Instance->CR1 &= ~ (1U << ((__INTERRUPT__) & USART_IT_MASK))): \\r
398                                                             ((((uint8_t)(__INTERRUPT__)) >> 5U) == 2)? ((__HANDLE__)->Instance->CR2 &= ~ (1U << ((__INTERRUPT__) & USART_IT_MASK))): \\r
399                                                             ((__HANDLE__)->Instance->CR3 &= ~ (1U << ((__INTERRUPT__) & USART_IT_MASK))))\r
400 \r
401 \r
402 /** @brief  Checks whether the specified USART interrupt has occurred or not.\r
403   * @param  __HANDLE__: specifies the USART Handle\r
404   * @param  __IT__: specifies the USART interrupt source to check.\r
405   *          This parameter can be one of the following values:\r
406   *            @arg USART_IT_TXE: Transmit Data Register empty interrupt\r
407   *            @arg USART_IT_TC:  Transmission complete interrupt\r
408   *            @arg USART_IT_RXNE: Receive Data register not empty interrupt\r
409   *            @arg USART_IT_IDLE: Idle line detection interrupt\r
410   *            @arg USART_IT_ORE: OverRun Error interrupt\r
411   *            @arg USART_IT_NE: Noise Error interrupt\r
412   *            @arg USART_IT_FE: Framing Error interrupt\r
413   *            @arg USART_IT_PE: Parity Error interrupt\r
414   * @retval The new state of __IT__ (TRUE or FALSE).\r
415   */\r
416 #define __HAL_USART_GET_IT(__HANDLE__, __IT__) ((__HANDLE__)->Instance->ISR & ((uint32_t)1 << ((__IT__)>> 0x08)))\r
417 \r
418 /** @brief  Checks whether the specified USART interrupt source is enabled.\r
419   * @param  __HANDLE__: specifies the USART Handle.\r
420   * @param  __IT__: specifies the USART interrupt source to check.\r
421   *          This parameter can be one of the following values:\r
422   *            @arg USART_IT_TXE: Transmit Data Register empty interrupt\r
423   *            @arg USART_IT_TC:  Transmission complete interrupt\r
424   *            @arg USART_IT_RXNE: Receive Data register not empty interrupt\r
425   *            @arg USART_IT_IDLE: Idle line detection interrupt\r
426   *            @arg USART_IT_ORE: OverRun Error interrupt\r
427   *            @arg USART_IT_NE: Noise Error interrupt\r
428   *            @arg USART_IT_FE: Framing Error interrupt\r
429   *            @arg USART_IT_PE: Parity Error interrupt\r
430   * @retval The new state of __IT__ (TRUE or FALSE).\r
431   */\r
432 #define __HAL_USART_GET_IT_SOURCE(__HANDLE__, __IT__) ((((((uint8_t)(__IT__)) >> 5) == 1)? (__HANDLE__)->Instance->CR1:(((((uint8_t)(__IT__)) >> 5) == 2)? \\r
433                                                    (__HANDLE__)->Instance->CR2 : (__HANDLE__)->Instance->CR3)) & ((uint32_t)1 << \\r
434                                                    (((uint16_t)(__IT__)) & USART_IT_MASK)))\r
435 \r
436 \r
437 /** @brief  Clears the specified USART ISR flag, in setting the proper ICR register flag.\r
438   * @param  __HANDLE__: specifies the USART Handle.\r
439   * @param  __IT_CLEAR__: specifies the interrupt clear register flag that needs to be set\r
440   *                       to clear the corresponding interrupt\r
441   *          This parameter can be one of the following values:\r
442   *            @arg USART_CLEAR_PEF: Parity Error Clear Flag\r
443   *            @arg USART_CLEAR_FEF: Framing Error Clear Flag\r
444   *            @arg USART_CLEAR_NEF: Noise detected Clear Flag\r
445   *            @arg USART_CLEAR_OREF: OverRun Error Clear Flag\r
446   *            @arg USART_CLEAR_IDLEF: IDLE line detected Clear Flag\r
447   *            @arg USART_CLEAR_TCF: Transmission Complete Clear Flag\r
448   *            @arg USART_CLEAR_CTSF: CTS Interrupt Clear Flag\r
449   * @retval None\r
450   */\r
451 #define __HAL_USART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__))\r
452 \r
453 /** @brief  Set a specific USART request flag.\r
454   * @param  __HANDLE__: specifies the USART Handle.\r
455   * @param  __REQ__: specifies the request flag to set\r
456   *          This parameter can be one of the following values:\r
457   *            @arg USART_RXDATA_FLUSH_REQUEST: Receive Data flush Request\r
458   *            @arg USART_TXDATA_FLUSH_REQUEST: Transmit data flush Request\r
459   *\r
460   * @retval None\r
461   */\r
462 #define __HAL_USART_SEND_REQ(__HANDLE__, __REQ__) ((__HANDLE__)->Instance->RQR |= (uint16_t)(__REQ__)) \r
463 \r
464 /** @brief  Enable USART\r
465   * @param  __HANDLE__: specifies the USART Handle.\r
466   * @retval None\r
467   */\r
468 #define __HAL_USART_ENABLE(__HANDLE__)                 ((__HANDLE__)->Instance->CR1 |=  USART_CR1_UE)\r
469 \r
470 /** @brief  Disable USART\r
471   * @param  __HANDLE__: specifies the USART Handle.\r
472   * @retval None\r
473   */\r
474 #define __HAL_USART_DISABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR1 &=  ~USART_CR1_UE)\r
475 \r
476 /**\r
477   * @}\r
478   */\r
479 /* Include UART HAL Extension module */\r
480 #include "stm32f7xx_hal_usart_ex.h"\r
481 \r
482 /* Exported functions --------------------------------------------------------*/\r
483 /** @addtogroup USART_Exported_Functions\r
484   * @{\r
485   */\r
486 \r
487 /** @addtogroup USART_Exported_Functions_Group1\r
488   * @{\r
489   */\r
490 /* Initialization/de-initialization functions  **********************************/\r
491 HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart);\r
492 HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart);\r
493 void HAL_USART_MspInit(USART_HandleTypeDef *husart);\r
494 void HAL_USART_MspDeInit(USART_HandleTypeDef *husart);\r
495 HAL_StatusTypeDef HAL_USART_CheckIdleState(USART_HandleTypeDef *husart);\r
496 /**\r
497   * @}\r
498   */\r
499 \r
500 /** @addtogroup USART_Exported_Functions_Group2\r
501   * @{\r
502   */\r
503 /* IO operation functions *******************************************************/\r
504 HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size, uint32_t Timeout);\r
505 HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);\r
506 HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);\r
507 HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);\r
508 HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);\r
509 HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,  uint16_t Size);\r
510 HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);\r
511 HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);\r
512 HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);\r
513 HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart);\r
514 HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart);\r
515 HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart);\r
516 void HAL_USART_IRQHandler(USART_HandleTypeDef *husart);\r
517 void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart);\r
518 void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart);\r
519 void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart);\r
520 void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart);\r
521 void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart);\r
522 void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart);\r
523 \r
524 /**\r
525   * @}\r
526   */ \r
527 \r
528 /** @addtogroup USART_Exported_Functions_Group3\r
529   * @{\r
530   */\r
531 /* Peripheral State functions  ************************************************/\r
532 HAL_USART_StateTypeDef HAL_USART_GetState(USART_HandleTypeDef *husart);\r
533 uint32_t               HAL_USART_GetError(USART_HandleTypeDef *husart);\r
534 \r
535 /**\r
536   * @}\r
537   */\r
538 \r
539 /**\r
540   * @}\r
541   */\r
542 /* Private types -------------------------------------------------------------*/\r
543 /* Private variables ---------------------------------------------------------*/\r
544 /* Private constants ---------------------------------------------------------*/\r
545 /** @defgroup USART_Private_Constants USART Private Constants\r
546   * @{\r
547   */\r
548 /** @brief USART interruptions flag mask\r
549   * \r
550   */ \r
551 #define USART_IT_MASK                             ((uint16_t)0x001F)\r
552 \r
553 /**\r
554   * @}\r
555   */\r
556 /* Private macros ------------------------------------------------------------*/\r
557 /** @defgroup USART_Private_Macros USART Private Macros\r
558   * @{\r
559   */\r
560 /** @brief  Reports the USART clock source.\r
561   * @param  __HANDLE__: specifies the USART Handle\r
562   * @param  __CLOCKSOURCE__ : output variable\r
563   * @retval the USART clocking source, written in __CLOCKSOURCE__.\r
564   */\r
565 #define USART_GETCLOCKSOURCE(__HANDLE__, __CLOCKSOURCE__)\\r
566   do {                                                         \\r
567     if((__HANDLE__)->Instance == USART1)                       \\r
568     {                                                          \\r
569        switch(__HAL_RCC_GET_USART1_SOURCE())                   \\r
570        {                                                       \\r
571         case RCC_USART1CLKSOURCE_PCLK2:                        \\r
572           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK2;         \\r
573           break;                                               \\r
574         case RCC_USART1CLKSOURCE_HSI:                          \\r
575           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI;           \\r
576           break;                                               \\r
577         case RCC_USART1CLKSOURCE_SYSCLK:                       \\r
578           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK;        \\r
579           break;                                               \\r
580         case RCC_USART1CLKSOURCE_LSE:                          \\r
581           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE;           \\r
582           break;                                               \\r
583         default:                                               \\r
584           break;                                               \\r
585        }                                                       \\r
586     }                                                          \\r
587     else if((__HANDLE__)->Instance == USART2)                  \\r
588     {                                                          \\r
589        switch(__HAL_RCC_GET_USART2_SOURCE())                   \\r
590        {                                                       \\r
591         case RCC_USART2CLKSOURCE_PCLK1:                        \\r
592           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK1;         \\r
593           break;                                               \\r
594         case RCC_USART2CLKSOURCE_HSI:                          \\r
595           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI;           \\r
596           break;                                               \\r
597         case RCC_USART2CLKSOURCE_SYSCLK:                       \\r
598           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK;        \\r
599           break;                                               \\r
600         case RCC_USART2CLKSOURCE_LSE:                          \\r
601           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE;           \\r
602           break;                                               \\r
603         default:                                               \\r
604           break;                                               \\r
605        }                                                       \\r
606     }                                                          \\r
607     else if((__HANDLE__)->Instance == USART3)                  \\r
608     {                                                          \\r
609        switch(__HAL_RCC_GET_USART3_SOURCE())                   \\r
610        {                                                       \\r
611         case RCC_USART3CLKSOURCE_PCLK1:                        \\r
612           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK1;         \\r
613           break;                                               \\r
614         case RCC_USART3CLKSOURCE_HSI:                          \\r
615           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI;           \\r
616           break;                                               \\r
617         case RCC_USART3CLKSOURCE_SYSCLK:                       \\r
618           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK;        \\r
619           break;                                               \\r
620         case RCC_USART3CLKSOURCE_LSE:                          \\r
621           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE;           \\r
622           break;                                               \\r
623         default:                                               \\r
624           break;                                               \\r
625        }                                                       \\r
626     }                                                          \\r
627     else if((__HANDLE__)->Instance == USART6)                  \\r
628     {                                                          \\r
629        switch(__HAL_RCC_GET_USART6_SOURCE())                   \\r
630        {                                                       \\r
631         case RCC_USART6CLKSOURCE_PCLK2:                        \\r
632           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK2;         \\r
633           break;                                               \\r
634         case RCC_USART6CLKSOURCE_HSI:                          \\r
635           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI;           \\r
636           break;                                               \\r
637         case RCC_USART6CLKSOURCE_SYSCLK:                       \\r
638           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK;        \\r
639           break;                                               \\r
640         case RCC_USART6CLKSOURCE_LSE:                          \\r
641           (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE;           \\r
642           break;                                               \\r
643         default:                                               \\r
644           break;                                               \\r
645        }                                                       \\r
646     }                                                          \\r
647  } while(0)\r
648   \r
649 \r
650 #define IS_USART_STOPBITS(__STOPBITS__) (((__STOPBITS__) == USART_STOPBITS_1) || \\r
651                                          ((__STOPBITS__) == USART_STOPBITS_1_5) || \\r
652                                          ((__STOPBITS__) == USART_STOPBITS_2))\r
653 #define IS_USART_PARITY(__PARITY__) (((__PARITY__) == USART_PARITY_NONE) || \\r
654                                      ((__PARITY__) == USART_PARITY_EVEN) || \\r
655                                      ((__PARITY__) == USART_PARITY_ODD))\r
656 #define IS_USART_MODE(__MODE__) ((((__MODE__) & (uint32_t)0xFFFFFFF3) == 0x00) && ((__MODE__) != (uint32_t)0x00))\r
657 #define IS_USART_OVERSAMPLING(__SAMPLING__) (((__SAMPLING__) == USART_OVERSAMPLING_16) || \\r
658                                              ((__SAMPLING__) == USART_OVERSAMPLING_8))\r
659 #define IS_USART_CLOCK(__CLOCK__)     (((__CLOCK__)== USART_CLOCK_DISABLE) || \\r
660                                        ((__CLOCK__)== USART_CLOCK_ENABLE))\r
661 #define IS_USART_POLARITY(__CPOL__) (((__CPOL__) == USART_POLARITY_LOW) || ((__CPOL__) == USART_POLARITY_HIGH))\r
662 #define IS_USART_PHASE(__CPHA__) (((__CPHA__) == USART_PHASE_1EDGE) || ((__CPHA__) == USART_PHASE_2EDGE))\r
663 #define IS_USART_LASTBIT(__LASTBIT__) (((__LASTBIT__) == USART_LASTBIT_DISABLE) || \\r
664                                        ((__LASTBIT__) == USART_LASTBIT_ENABLE))\r
665 #define IS_USART_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == USART_RXDATA_FLUSH_REQUEST) || \\r
666                                                ((__PARAM__) == USART_TXDATA_FLUSH_REQUEST))   \r
667 #define IS_USART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 9000001)\r
668 \r
669 /**\r
670   * @}\r
671   */\r
672 \r
673 /* Private functions ---------------------------------------------------------*/\r
674 /** @defgroup USART_Private_Functions USART Private Functions\r
675   * @{\r
676   */\r
677 \r
678 /**\r
679   * @}\r
680   */\r
681 \r
682 /**\r
683   * @}\r
684   */ \r
685 \r
686 /**\r
687   * @}\r
688   */\r
689   \r
690 #ifdef __cplusplus\r
691 }\r
692 #endif\r
693 \r
694 #endif /* __STM32F7xx_HAL_USART_H */\r
695 \r
696 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r