Subversion Repositories LedShow

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f1xx_hal_usart.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of USART HAL module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
10
  *
11
  * Redistribution and use in source and binary forms, with or without modification,
12
  * are permitted provided that the following conditions are met:
13
  *   1. Redistributions of source code must retain the above copyright notice,
14
  *      this list of conditions and the following disclaimer.
15
  *   2. Redistributions in binary form must reproduce the above copyright notice,
16
  *      this list of conditions and the following disclaimer in the documentation
17
  *      and/or other materials provided with the distribution.
18
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
19
  *      may be used to endorse or promote products derived from this software
20
  *      without specific prior written permission.
21
  *
22
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
  *
33
  ******************************************************************************
34
  */
35
 
36
/* Define to prevent recursive inclusion -------------------------------------*/
37
#ifndef __STM32F1xx_HAL_USART_H
38
#define __STM32F1xx_HAL_USART_H
39
 
40
#ifdef __cplusplus
41
 extern "C" {
42
#endif
43
 
44
/* Includes ------------------------------------------------------------------*/
45
#include "stm32f1xx_hal_def.h"
46
 
47
/** @addtogroup STM32F1xx_HAL_Driver
48
  * @{
49
  */
50
 
51
/** @addtogroup USART
52
  * @{
53
  */
54
 
55
/* Exported types ------------------------------------------------------------*/
56
/** @defgroup USART_Exported_Types USART Exported Types
57
  * @{
58
  */
59
 
60
/**
61
  * @brief USART Init Structure definition
62
  */
63
typedef struct
64
{
65
  uint32_t BaudRate;                  /*!< This member configures the Usart communication baud rate.
66
                                           The baud rate is computed using the following formula:
67
                                           - IntegerDivider = ((PCLKx) / (16 * (husart->Init.BaudRate)))
68
                                           - FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5 */
69
 
70
  uint32_t WordLength;                /*!< Specifies the number of data bits transmitted or received in a frame.
71
                                           This parameter can be a value of @ref USART_Word_Length */
72
 
73
  uint32_t StopBits;                  /*!< Specifies the number of stop bits transmitted.
74
                                           This parameter can be a value of @ref USART_Stop_Bits */
75
 
76
  uint32_t Parity;                    /*!< Specifies the parity mode.
77
                                           This parameter can be a value of @ref USART_Parity
78
                                           @note When parity is enabled, the computed parity is inserted
79
                                                 at the MSB position of the transmitted data (9th bit when
80
                                                 the word length is set to 9 data bits; 8th bit when the
81
                                                 word length is set to 8 data bits). */
82
 
83
  uint32_t Mode;                      /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.
84
                                           This parameter can be a value of @ref USART_Mode */
85
 
86
  uint32_t CLKPolarity;               /*!< Specifies the steady state of the serial clock.
87
                                           This parameter can be a value of @ref USART_Clock_Polarity */
88
 
89
  uint32_t CLKPhase;                  /*!< Specifies the clock transition on which the bit capture is made.
90
                                           This parameter can be a value of @ref USART_Clock_Phase */
91
 
92
  uint32_t CLKLastBit;                /*!< Specifies whether the clock pulse corresponding to the last transmitted
93
                                           data bit (MSB) has to be output on the SCLK pin in synchronous mode.
94
                                           This parameter can be a value of @ref USART_Last_Bit */
95
}USART_InitTypeDef;
96
 
97
/**
98
  * @brief HAL State structures definition
99
  */
100
typedef enum
101
{
102
  HAL_USART_STATE_RESET             = 0x00U,    /*!< Peripheral is not yet initialized   */
103
  HAL_USART_STATE_READY             = 0x01U,    /*!< Peripheral Initialized and ready for use */
104
  HAL_USART_STATE_BUSY              = 0x02U,    /*!< an internal process is ongoing */  
105
  HAL_USART_STATE_BUSY_TX           = 0x12U,    /*!< Data Transmission process is ongoing */
106
  HAL_USART_STATE_BUSY_RX           = 0x22U,    /*!< Data Reception process is ongoing */
107
  HAL_USART_STATE_BUSY_TX_RX        = 0x32U,    /*!< Data Transmission Reception process is ongoing */
108
  HAL_USART_STATE_TIMEOUT           = 0x03U,    /*!< Timeout state */
109
  HAL_USART_STATE_ERROR             = 0x04U     /*!< Error */
110
}HAL_USART_StateTypeDef;
111
 
112
/**
113
  * @brief  USART handle Structure definition  
114
  */  
115
typedef struct
116
{
117
  USART_TypeDef                 *Instance;        /*!< USART registers base address        */
118
 
119
  USART_InitTypeDef             Init;             /*!< Usart communication parameters      */
120
 
121
  uint8_t                       *pTxBuffPtr;      /*!< Pointer to Usart Tx transfer Buffer */
122
 
123
  uint16_t                      TxXferSize;       /*!< Usart Tx Transfer size              */
124
 
125
  __IO uint16_t                 TxXferCount;      /*!< Usart Tx Transfer Counter           */
126
 
127
  uint8_t                       *pRxBuffPtr;      /*!< Pointer to Usart Rx transfer Buffer */
128
 
129
  uint16_t                      RxXferSize;       /*!< Usart Rx Transfer size              */
130
 
131
  __IO uint16_t                 RxXferCount;      /*!< Usart Rx Transfer Counter           */
132
 
133
  DMA_HandleTypeDef             *hdmatx;          /*!< Usart Tx DMA Handle parameters      */
134
 
135
  DMA_HandleTypeDef             *hdmarx;          /*!< Usart Rx DMA Handle parameters      */
136
 
137
  HAL_LockTypeDef               Lock;             /*!< Locking object                      */
138
 
139
  __IO HAL_USART_StateTypeDef   State;            /*!< Usart communication state           */
140
 
141
  __IO uint32_t                 ErrorCode;        /*!< USART Error code                    */
142
}USART_HandleTypeDef;
143
/**
144
  * @}
145
  */
146
 
147
/* Exported constants --------------------------------------------------------*/
148
/** @defgroup USART_Exported_Constants USART Exported Constants
149
  * @{
150
  */
151
 
152
/** @defgroup USART_Error_Code USART Error Code
153
  * @brief    USART Error Code
154
  * @{
155
  */
156
#define HAL_USART_ERROR_NONE         0x00000000U   /*!< No error            */
157
#define HAL_USART_ERROR_PE           0x00000001U   /*!< Parity error        */
158
#define HAL_USART_ERROR_NE           0x00000002U   /*!< Noise error         */
159
#define HAL_USART_ERROR_FE           0x00000004U   /*!< Frame error         */
160
#define HAL_USART_ERROR_ORE          0x00000008U   /*!< Overrun error       */
161
#define HAL_USART_ERROR_DMA          0x00000010U   /*!< DMA transfer error  */
162
/**
163
  * @}
164
  */
165
 
166
/** @defgroup USART_Word_Length USART Word Length
167
  * @{
168
  */
169
#define USART_WORDLENGTH_8B                  0x00000000U
170
#define USART_WORDLENGTH_9B                  ((uint32_t)USART_CR1_M)
171
/**
172
  * @}
173
  */
174
 
175
/** @defgroup USART_Stop_Bits USART Number of Stop Bits
176
  * @{
177
  */
178
#define USART_STOPBITS_1                     0x00000000U
179
#define USART_STOPBITS_0_5                   ((uint32_t)USART_CR2_STOP_0)
180
#define USART_STOPBITS_2                     ((uint32_t)USART_CR2_STOP_1)
181
#define USART_STOPBITS_1_5                   ((uint32_t)(USART_CR2_STOP_0 | USART_CR2_STOP_1))
182
/**
183
  * @}
184
  */
185
 
186
/** @defgroup USART_Parity USART Parity
187
  * @{
188
  */
189
#define USART_PARITY_NONE                    0x00000000U
190
#define USART_PARITY_EVEN                    ((uint32_t)USART_CR1_PCE)
191
#define USART_PARITY_ODD                     ((uint32_t)(USART_CR1_PCE | USART_CR1_PS))
192
/**
193
  * @}
194
  */
195
 
196
/** @defgroup USART_Mode USART Mode
197
  * @{
198
  */
199
#define USART_MODE_RX                        ((uint32_t)USART_CR1_RE)
200
#define USART_MODE_TX                        ((uint32_t)USART_CR1_TE)
201
#define USART_MODE_TX_RX                     ((uint32_t)(USART_CR1_TE |USART_CR1_RE))
202
/**
203
  * @}
204
  */
205
 
206
/** @defgroup USART_Clock USART Clock
207
  * @{
208
  */
209
#define USART_CLOCK_DISABLE                 0x00000000U
210
#define USART_CLOCK_ENABLE                  ((uint32_t)USART_CR2_CLKEN)
211
/**
212
  * @}
213
  */
214
 
215
/** @defgroup USART_Clock_Polarity USART Clock Polarity
216
  * @{
217
  */
218
#define USART_POLARITY_LOW                   0x00000000U
219
#define USART_POLARITY_HIGH                  ((uint32_t)USART_CR2_CPOL)
220
/**
221
  * @}
222
  */
223
 
224
/** @defgroup USART_Clock_Phase USART Clock Phase
225
  * @{
226
  */
227
#define USART_PHASE_1EDGE                    0x00000000U
228
#define USART_PHASE_2EDGE                    ((uint32_t)USART_CR2_CPHA)
229
/**
230
  * @}
231
  */
232
 
233
/** @defgroup USART_Last_Bit USART Last Bit
234
  * @{
235
  */
236
#define USART_LASTBIT_DISABLE                0x00000000U
237
#define USART_LASTBIT_ENABLE                 ((uint32_t)USART_CR2_LBCL)
238
/**
239
  * @}
240
  */
241
 
242
/** @defgroup USART_NACK_State USART NACK State
243
  * @{
244
  */
245
#define USART_NACK_ENABLE           ((uint32_t)USART_CR3_NACK)
246
#define USART_NACK_DISABLE          0x00000000U
247
/**
248
  * @}
249
  */
250
 
251
/** @defgroup USART_Flags USART Flags
252
  *        Elements values convention: 0xXXXX
253
  *           - 0xXXXX  : Flag mask in the SR register
254
  * @{
255
  */
256
#define USART_FLAG_TXE                  ((uint32_t)USART_SR_TXE)
257
#define USART_FLAG_TC                   ((uint32_t)USART_SR_TC)
258
#define USART_FLAG_RXNE                 ((uint32_t)USART_SR_RXNE)
259
#define USART_FLAG_IDLE                 ((uint32_t)USART_SR_IDLE)
260
#define USART_FLAG_ORE                  ((uint32_t)USART_SR_ORE)
261
#define USART_FLAG_NE                   ((uint32_t)USART_SR_NE)
262
#define USART_FLAG_FE                   ((uint32_t)USART_SR_FE)
263
#define USART_FLAG_PE                   ((uint32_t)USART_SR_PE)
264
/**
265
  * @}
266
  */
267
 
268
/** @defgroup USART_Interrupt_definition USART Interrupts Definition
269
  *        Elements values convention: 0xY000XXXX
270
  *           - XXXX  : Interrupt mask in the XX register
271
  *           - Y  : Interrupt source register (2bits)
272
  *                 - 01: CR1 register
273
  *                 - 10: CR2 register
274
  *                 - 11: CR3 register
275
  *
276
  * @{
277
  */
278
 
279
#define USART_IT_PE                     ((uint32_t)(USART_CR1_REG_INDEX << 28U | USART_CR1_PEIE))
280
#define USART_IT_TXE                    ((uint32_t)(USART_CR1_REG_INDEX << 28U | USART_CR1_TXEIE))
281
#define USART_IT_TC                     ((uint32_t)(USART_CR1_REG_INDEX << 28U | USART_CR1_TCIE))
282
#define USART_IT_RXNE                   ((uint32_t)(USART_CR1_REG_INDEX << 28U | USART_CR1_RXNEIE))
283
#define USART_IT_IDLE                   ((uint32_t)(USART_CR1_REG_INDEX << 28U | USART_CR1_IDLEIE))
284
 
285
#define USART_IT_LBD                    ((uint32_t)(USART_CR2_REG_INDEX << 28U | USART_CR2_LBDIE))
286
 
287
#define USART_IT_CTS                    ((uint32_t)(USART_CR3_REG_INDEX << 28U | USART_CR3_CTSIE))
288
#define USART_IT_ERR                    ((uint32_t)(USART_CR3_REG_INDEX << 28U | USART_CR3_EIE))
289
/**
290
  * @}
291
  */
292
 
293
/**
294
  * @}
295
  */
296
 
297
/* Exported macro ------------------------------------------------------------*/
298
/** @defgroup USART_Exported_Macros USART Exported Macros
299
  * @{
300
  */
301
 
302
/** @brief Reset USART handle state
303
  * @param  __HANDLE__: specifies the USART Handle.
304
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
305
  */
306
#define __HAL_USART_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_USART_STATE_RESET)
307
 
308
/** @brief  Checks whether the specified USART flag is set or not.
309
  * @param  __HANDLE__: specifies the USART Handle.
310
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
311
  * @param  __FLAG__: specifies the flag to check.
312
  *        This parameter can be one of the following values:
313
  *            @arg USART_FLAG_TXE:  Transmit data register empty flag
314
  *            @arg USART_FLAG_TC:   Transmission Complete flag
315
  *            @arg USART_FLAG_RXNE: Receive data register not empty flag
316
  *            @arg USART_FLAG_IDLE: Idle Line detection flag
317
  *            @arg USART_FLAG_ORE:  OverRun Error flag
318
  *            @arg USART_FLAG_NE:   Noise Error flag
319
  *            @arg USART_FLAG_FE:   Framing Error flag
320
  *            @arg USART_FLAG_PE:   Parity Error flag
321
  * @retval The new state of __FLAG__ (TRUE or FALSE).
322
  */
323
#define __HAL_USART_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
324
 
325
/** @brief  Clears the specified USART pending flags.
326
  * @param  __HANDLE__: specifies the USART Handle.
327
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
328
  * @param  __FLAG__: specifies the flag to check.
329
  *          This parameter can be any combination of the following values:
330
  *            @arg USART_FLAG_TC:   Transmission Complete flag.
331
  *            @arg USART_FLAG_RXNE: Receive data register not empty flag.
332
  *  
333
  * @note   PE (Parity error), FE (Framing error), NE (Noise error), ORE (OverRun
334
  *          error) and IDLE (Idle line detected) flags are cleared by software
335
  *          sequence: a read operation to USART_SR register followed by a read
336
  *          operation to USART_DR register.
337
  * @note   RXNE flag can be also cleared by a read to the USART_DR register.
338
  * @note   TC flag can be also cleared by software sequence: a read operation to
339
  *          USART_SR register followed by a write operation to USART_DR register
340
  * @note   TXE flag is cleared only by a write to the USART_DR register
341
  *  
342
  */
343
#define __HAL_USART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->SR = ~(__FLAG__))
344
 
345
/** @brief  Clear the USART PE pending flag.
346
  * @param  __HANDLE__: specifies the USART Handle.
347
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
348
  */
349
#define __HAL_USART_CLEAR_PEFLAG(__HANDLE__)    \
350
  do{                                           \
351
    __IO uint32_t tmpreg = 0x00U;               \
352
    tmpreg = (__HANDLE__)->Instance->SR;        \
353
    tmpreg = (__HANDLE__)->Instance->DR;        \
354
    UNUSED(tmpreg);                             \
355
  } while(0U)
356
 
357
/** @brief  Clear the USART FE pending flag.
358
  * @param  __HANDLE__: specifies the USART Handle.
359
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
360
  */
361
#define __HAL_USART_CLEAR_FEFLAG(__HANDLE__) __HAL_USART_CLEAR_PEFLAG(__HANDLE__)
362
 
363
/** @brief  Clear the USART NE pending flag.
364
  * @param  __HANDLE__: specifies the USART Handle.
365
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
366
  */
367
#define __HAL_USART_CLEAR_NEFLAG(__HANDLE__) __HAL_USART_CLEAR_PEFLAG(__HANDLE__)
368
 
369
/** @brief  Clear the USART ORE pending flag.
370
  * @param  __HANDLE__: specifies the USART Handle.
371
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
372
 
373
  */
374
#define __HAL_USART_CLEAR_OREFLAG(__HANDLE__) __HAL_USART_CLEAR_PEFLAG(__HANDLE__)
375
 
376
/** @brief  Clear the USART IDLE pending flag.
377
  * @param  __HANDLE__: specifies the USART Handle.
378
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
379
  */
380
#define __HAL_USART_CLEAR_IDLEFLAG(__HANDLE__) __HAL_USART_CLEAR_PEFLAG(__HANDLE__)
381
 
382
/** @brief  Enable the specified USART interrupts.
383
  * @param  __HANDLE__: specifies the USART Handle.
384
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
385
  * @param  __INTERRUPT__: specifies the USART interrupt source to enable.
386
  *          This parameter can be one of the following values:
387
  *            @arg USART_IT_TXE:  Transmit Data Register empty interrupt
388
  *            @arg USART_IT_TC:   Transmission complete interrupt
389
  *            @arg USART_IT_RXNE: Receive Data register not empty interrupt
390
  *            @arg USART_IT_IDLE: Idle line detection interrupt
391
  *            @arg USART_IT_PE:   Parity Error interrupt
392
  *            @arg USART_IT_ERR:  Error interrupt(Frame error, noise error, overrun error)
393
  *          This parameter can be: ENABLE or DISABLE.
394
  */
395
#define __HAL_USART_ENABLE_IT(__HANDLE__, __INTERRUPT__)   ((((__INTERRUPT__) >> 28U) == USART_CR1_REG_INDEX)? ((__HANDLE__)->Instance->CR1 |= ((__INTERRUPT__) & USART_IT_MASK)): \
396
                                                            (((__INTERRUPT__) >> 28U) == USART_CR2_REG_INDEX)? ((__HANDLE__)->Instance->CR2 |=  ((__INTERRUPT__) & USART_IT_MASK)): \
397
                                                            ((__HANDLE__)->Instance->CR3 |= ((__INTERRUPT__) & USART_IT_MASK)))
398
 
399
/** @brief  Disable the specified USART interrupts.
400
  * @param  __HANDLE__: specifies the USART Handle.
401
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
402
  * @param  __INTERRUPT__: specifies the USART interrupt source to disable.
403
  *          This parameter can be one of the following values:
404
  *            @arg USART_IT_TXE:  Transmit Data Register empty interrupt
405
  *            @arg USART_IT_TC:   Transmission complete interrupt
406
  *            @arg USART_IT_RXNE: Receive Data register not empty interrupt
407
  *            @arg USART_IT_IDLE: Idle line detection interrupt
408
  *            @arg USART_IT_PE:   Parity Error interrupt
409
  *            @arg USART_IT_ERR:  Error interrupt(Frame error, noise error, overrun error)
410
  *          This parameter can be: ENABLE or DISABLE.
411
  */
412
#define __HAL_USART_DISABLE_IT(__HANDLE__, __INTERRUPT__)  ((((__INTERRUPT__) >> 28U) == USART_CR1_REG_INDEX)? ((__HANDLE__)->Instance->CR1 &= ~((__INTERRUPT__) & USART_IT_MASK)): \
413
                                                            (((__INTERRUPT__) >> 28U) == USART_CR2_REG_INDEX)? ((__HANDLE__)->Instance->CR2 &= ~((__INTERRUPT__) & USART_IT_MASK)): \
414
                                                             ((__HANDLE__)->Instance->CR3 &= ~ ((__INTERRUPT__) & USART_IT_MASK)))
415
 
416
/** @brief  Checks whether the specified USART interrupt has occurred or not.
417
  * @param  __HANDLE__: specifies the USART Handle.
418
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
419
  * @param  __IT__: specifies the USART interrupt source to check.
420
  *          This parameter can be one of the following values:
421
  *            @arg USART_IT_TXE: Transmit Data Register empty interrupt
422
  *            @arg USART_IT_TC:  Transmission complete interrupt
423
  *            @arg USART_IT_RXNE: Receive Data register not empty interrupt
424
  *            @arg USART_IT_IDLE: Idle line detection interrupt
425
  *            @arg USART_IT_ERR: Error interrupt
426
  *            @arg USART_IT_PE: Parity Error interrupt
427
  * @retval The new state of __IT__ (TRUE or FALSE).
428
  */
429
#define __HAL_USART_GET_IT_SOURCE(__HANDLE__, __IT__) (((((__IT__) >> 28U) == USART_CR1_REG_INDEX)? (__HANDLE__)->Instance->CR1:(((((uint32_t)(__IT__)) >> 28U) == USART_CR2_REG_INDEX)? \
430
                                                      (__HANDLE__)->Instance->CR2 : (__HANDLE__)->Instance->CR3)) & (((uint32_t)(__IT__)) & USART_IT_MASK))
431
 
432
/** @brief  Enable USART
433
  * @param  __HANDLE__: specifies the USART Handle.
434
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
435
  */
436
#define __HAL_USART_ENABLE(__HANDLE__)               SET_BIT((__HANDLE__)->Instance->CR1,(USART_CR1_UE)) 
437
 
438
/** @brief  Disable USART
439
  * @param  __HANDLE__: specifies the USART Handle.
440
  *         USART Handle selects the USARTx peripheral (USART availability and x value depending on device).
441
  */
442
#define __HAL_USART_DISABLE(__HANDLE__)              CLEAR_BIT((__HANDLE__)->Instance->CR1,(USART_CR1_UE)) 
443
/**
444
  * @}
445
  */
446
/* Exported functions --------------------------------------------------------*/
447
/** @addtogroup USART_Exported_Functions
448
  * @{
449
  */
450
 
451
/** @addtogroup USART_Exported_Functions_Group1
452
  * @{
453
  */
454
/* Initialization/de-initialization functions  **********************************/
455
HAL_StatusTypeDef HAL_USART_Init(USART_HandleTypeDef *husart);
456
HAL_StatusTypeDef HAL_USART_DeInit(USART_HandleTypeDef *husart);
457
void HAL_USART_MspInit(USART_HandleTypeDef *husart);
458
void HAL_USART_MspDeInit(USART_HandleTypeDef *husart);
459
/**
460
  * @}
461
  */
462
 
463
/** @addtogroup USART_Exported_Functions_Group2
464
  * @{
465
  */
466
/* IO operation functions *******************************************************/
467
HAL_StatusTypeDef HAL_USART_Transmit(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size, uint32_t Timeout);
468
HAL_StatusTypeDef HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
469
HAL_StatusTypeDef HAL_USART_TransmitReceive(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);
470
HAL_StatusTypeDef HAL_USART_Transmit_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);
471
HAL_StatusTypeDef HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);
472
HAL_StatusTypeDef HAL_USART_TransmitReceive_IT(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData,  uint16_t Size);
473
HAL_StatusTypeDef HAL_USART_Transmit_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size);
474
HAL_StatusTypeDef HAL_USART_Receive_DMA(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size);
475
HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA(USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
476
HAL_StatusTypeDef HAL_USART_DMAPause(USART_HandleTypeDef *husart);
477
HAL_StatusTypeDef HAL_USART_DMAResume(USART_HandleTypeDef *husart);
478
HAL_StatusTypeDef HAL_USART_DMAStop(USART_HandleTypeDef *husart);
479
/* Transfer Abort functions */
480
HAL_StatusTypeDef HAL_USART_Abort(USART_HandleTypeDef *husart);
481
HAL_StatusTypeDef HAL_USART_Abort_IT(USART_HandleTypeDef *husart);
482
 
483
void HAL_USART_IRQHandler(USART_HandleTypeDef *husart);
484
void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart);
485
void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart);
486
void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart);
487
void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart);
488
void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart);
489
void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart);
490
void HAL_USART_AbortCpltCallback (USART_HandleTypeDef *husart);
491
/**
492
  * @}
493
  */
494
 
495
/** @addtogroup USART_Exported_Functions_Group3
496
  * @{
497
  */
498
/* Peripheral State functions  ************************************************/
499
HAL_USART_StateTypeDef HAL_USART_GetState(USART_HandleTypeDef *husart);
500
uint32_t               HAL_USART_GetError(USART_HandleTypeDef *husart);
501
/**
502
  * @}
503
  */
504
 
505
/**
506
  * @}
507
  */
508
/* Private types -------------------------------------------------------------*/
509
/* Private variables ---------------------------------------------------------*/
510
/* Private constants ---------------------------------------------------------*/
511
/** @defgroup USART_Private_Constants USART Private Constants
512
  * @{
513
  */
514
/** @brief USART interruptions flag mask
515
  *
516
  */
517
#define USART_IT_MASK                   0x0000FFFFU
518
 
519
#define USART_CR1_REG_INDEX             1U
520
#define USART_CR2_REG_INDEX             2U
521
#define USART_CR3_REG_INDEX             3U
522
/**
523
  * @}
524
  */
525
 
526
/* Private macros ------------------------------------------------------------*/
527
/** @defgroup USART_Private_Macros USART Private Macros
528
  * @{
529
  */
530
#define IS_USART_NACK_STATE(NACK) (((NACK) == USART_NACK_ENABLE) || \
531
                                   ((NACK) == USART_NACK_DISABLE))
532
 
533
#define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LASTBIT_DISABLE) || \
534
                                   ((LASTBIT) == USART_LASTBIT_ENABLE))
535
 
536
#define IS_USART_PHASE(CPHA) (((CPHA) == USART_PHASE_1EDGE) || ((CPHA) == USART_PHASE_2EDGE))
537
 
538
#define IS_USART_POLARITY(CPOL) (((CPOL) == USART_POLARITY_LOW) || ((CPOL) == USART_POLARITY_HIGH))
539
 
540
#define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_CLOCK_DISABLE) || \
541
                               ((CLOCK) == USART_CLOCK_ENABLE))
542
 
543
#define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WORDLENGTH_8B) || \
544
                                      ((LENGTH) == USART_WORDLENGTH_9B))
545
 
546
#define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_STOPBITS_1)   || \
547
                                     ((STOPBITS) == USART_STOPBITS_0_5) || \
548
                                     ((STOPBITS) == USART_STOPBITS_1_5) || \
549
                                     ((STOPBITS) == USART_STOPBITS_2))
550
 
551
#define IS_USART_PARITY(PARITY) (((PARITY) == USART_PARITY_NONE) || \
552
                                 ((PARITY) == USART_PARITY_EVEN) || \
553
                                 ((PARITY) == USART_PARITY_ODD))
554
 
555
#define IS_USART_MODE(MODE) ((((MODE) & 0xFFF3U) == 0x00U) && ((MODE) != 0x00U))
556
 
557
#define IS_USART_BAUDRATE(BAUDRATE) ((BAUDRATE) < 4500001U)
558
 
559
#define USART_DIV(_PCLK_, _BAUD_) (((_PCLK_)*25U)/(2U*(_BAUD_)))
560
 
561
#define USART_DIVMANT(_PCLK_, _BAUD_) (USART_DIV((_PCLK_), (_BAUD_))/100U)
562
 
563
#define USART_DIVFRAQ(_PCLK_, _BAUD_) (((USART_DIV((_PCLK_), (_BAUD_)) - (USART_DIVMANT((_PCLK_), (_BAUD_)) * 100U)) * 16U + 50U) / 100U)
564
 
565
#define USART_BRR(_PCLK_, _BAUD_) ((USART_DIVMANT((_PCLK_), (_BAUD_)) << 4U)|(USART_DIVFRAQ((_PCLK_), (_BAUD_)) & 0x0FU))
566
/**
567
  * @}
568
  */
569
 
570
/* Private functions ---------------------------------------------------------*/
571
/** @defgroup USART_Private_Functions USART Private Functions
572
  * @{
573
  */
574
 
575
/**
576
  * @}
577
  */
578
 
579
/**
580
  * @}
581
  */
582
 
583
/**
584
  * @}
585
  */
586
 
587
#ifdef __cplusplus
588
}
589
#endif
590
 
591
#endif /* __STM32F1xx_HAL_USART_H */
592
 
593
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/