summaryrefslogtreecommitdiff
path: root/bsp/Vango/v85xx/libraries/VangoV85xx_standard_peripheral/Include/lib_uart.h
blob: 3839c2e67f72a26df785842883f13331b8923d7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/**
  ******************************************************************************
  * @file    lib_uart.h 
  * @author  Application Team
  * @version V4.4.0
  * @date    2018-09-27
  * @brief   UART library.
  ******************************************************************************
  * @attention
  *
  ******************************************************************************
  */
#ifndef __LIB_UART_H
#define __LIB_UART_H

#ifdef __cplusplus
 extern "C" {
#endif

#include "target.h"
   
//UART Init struct    
typedef struct
{
  uint32_t Mode;
  uint32_t Parity;
  uint32_t WordLen;
  uint32_t FirstBit;
  uint32_t Baudrate;
} UART_InitType;
//Mode
#define UART_MODE_RX   UART_CTRL_RXEN
#define UART_MODE_TX   UART_CTRL_TXEN
#define UART_MODE_OFF  0
#define UART_MODE_Msk  (UART_CTRL_RXEN | UART_CTRL_TXEN)
//Parity
#define UART_PARITY_EVEN    UART_CTRL2_PMODE_EVEN
#define UART_PARITY_ODD     UART_CTRL2_PMODE_ODD
#define UART_PARITY_0       UART_CTRL2_PMODE_0
#define UART_PARITY_1       UART_CTRL2_PMODE_1
#define UART_PARITY_NONE    0
//WordLen
#define UART_WORDLEN_8B     0
#define UART_WORDLEN_9B     UART_CTRL2_MODE
//FirstBit
#define UART_FIRSTBIT_LSB   0
#define UART_FIRSTBIT_MSB   UART_CTRL2_MSB

//UART Configration Information struct
typedef struct 
{
  uint32_t Mode_Transmit  :1; //1: TX Enable; 0: TX Disable
  uint32_t Mode_Receive   :1; //1: RX Enable; 0: RX Disable
  uint32_t Baudrate;          //The value of current budrate
  uint8_t  Parity;            //0: parity bit=0; 1: parity bit=1; 2: Even parity; 3:Odd parity
  uint8_t  WordLen;           //8: data bits=8; 9: data bits=9
  uint8_t  FirstBit;          //0: LSB transmit first; 1: MSB transmit first
} UART_ConfigINFOType;

//status
#define UART_FLAG_RXPARITY    UART_STATE_RXPSTS
#define UART_FLAG_TXDONE      UART_STATE_TXDONE
#define UART_FLAG_RXPE        UART_STATE_RXPE
#define UART_FLAG_RXOV        UART_STATE_RXOV
#define UART_FLAG_TXOV        UART_STATE_TXOV
#define UART_FLAG_RXFULL      UART_STATE_RXFULL
#define UART_FLAG_RCMsk      (UART_FLAG_TXDONE \
                             |UART_FLAG_RXPE   \
                             |UART_FLAG_RXOV   \
                             |UART_STATE_RXFULL\
                             |UART_FLAG_TXOV)

//interrupt
#define UART_INT_TXDONE     UART_CTRL_TXDONEIE
#define UART_INT_RXPE       UART_CTRL_RXPEIE
#define UART_INT_RXOV       UART_CTRL_RXOVIE
#define UART_INT_TXOV       UART_CTRL_TXOVIE
#define UART_INT_RX         UART_CTRL_RXIE
#define UART_INT_Msk       (UART_INT_TXDONE \
                           |UART_INT_RXPE   \
                           |UART_INT_RXOV   \
                           |UART_INT_TXOV   \
                           |UART_INT_RX)

//INTStatus
#define UART_INTSTS_TXDONE  UART_INTSTS_TXDONEIF
#define UART_INTSTS_RXPE    UART_INTSTS_RXPEIF  
#define UART_INTSTS_RXOV    UART_INTSTS_RXOVIF  
#define UART_INTSTS_TXOV    UART_INTSTS_TXOVIF  
#define UART_INTSTS_RX      UART_INTSTS_RXIF    
#define UART_INTSTS_Msk    (UART_INTSTS_TXDONE \
                           |UART_INTSTS_RXPE   \
                           |UART_INTSTS_RXOV   \
                           |UART_INTSTS_TXOV   \
                           |UART_INTSTS_RX)
 
/* Private macros ------------------------------------------------------------*/
#define IS_UART_MODE(__MODE__)  (((((__MODE__) & UART_MODE_Msk) != 0U) && (((__MODE__) & ~UART_MODE_Msk) == 0U)) ||\
                                 ((__MODE__) == UART_MODE_OFF))

#define IS_UART_PARITY(__PARITY__)  (((__PARITY__) == UART_PARITY_EVEN) ||\
                                     ((__PARITY__) == UART_PARITY_ODD)  ||\
                                     ((__PARITY__) == UART_PARITY_0)    ||\
                                     ((__PARITY__) == UART_PARITY_1)    ||\
                                     ((__PARITY__) == UART_PARITY_NONE))

#define IS_UART_WORDLEN(__WORDLEN__)  (((__WORDLEN__) == UART_WORDLEN_8B) ||\
                                       ((__WORDLEN__) == UART_WORDLEN_9B))

#define IS_UART_FIRSTBIT(__FIRSTBIT__)  (((__FIRSTBIT__) == UART_FIRSTBIT_LSB) ||\
                                         ((__FIRSTBIT__) == UART_FIRSTBIT_MSB))

#define IS_UART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) < 0x100000UL)

#define IS_UART_FLAGR(__FLAGR__)  (((__FLAGR__) == UART_FLAG_RXPARITY) ||\
                                   ((__FLAGR__) == UART_FLAG_TXDONE)   ||\
                                   ((__FLAGR__) == UART_FLAG_RXPE)     ||\
                                   ((__FLAGR__) == UART_FLAG_RXOV)     ||\
                                   ((__FLAGR__) == UART_FLAG_TXOV)     ||\
                                   ((__FLAGR__) == UART_FLAG_RXFULL))

#define IS_UART_FLAGC(__FLAGC__)  ((((__FLAGC__) & UART_FLAG_RCMsk) != 0U) &&\
                                   (((__FLAGC__) & ~UART_FLAG_RCMsk) == 0U))

#define IS_UART_INT(__INT__)  ((((__INT__) & UART_INT_Msk) != 0U) &&\
                               (((__INT__) & ~UART_INT_Msk) == 0U))

#define IS_UART_INTFLAGR(__INTFLAGR__)  (((__INTFLAGR__) == UART_INTSTS_TXDONE) ||\
                                         ((__INTFLAGR__) == UART_INTSTS_RXPE) ||\
                                         ((__INTFLAGR__) == UART_INTSTS_RXOV) ||\
                                         ((__INTFLAGR__) == UART_INTSTS_TXOV) ||\
                                         ((__INTFLAGR__) == UART_INTSTS_RX))

#define IS_UART_INTFLAGC(__INTFLAGC__)  ((((__INTFLAGC__) & UART_INTSTS_Msk) != 0U) &&\
                                         (((__INTFLAGC__) & ~UART_INTSTS_Msk) == 0U))

/* Exported Functions ------------------------------------------------------- */
/* UART Exported Functions Group1: 
                                   Initialization and functions --------------*/
void UART_DeInit(UART_TypeDef *UARTx);
void UART_Init(UART_TypeDef *UARTx, UART_InitType *InitStruct);
void UART_StructInit(UART_InitType *InitStruct);
/* UART Exported Functions Group2: 
                                   (Interrupt) Flag --------------------------*/
uint8_t UART_GetFlag(UART_TypeDef *UARTx, uint32_t FlagMask);
void UART_ClearFlag(UART_TypeDef *UARTx, uint32_t FlagMask);
void UART_INTConfig(UART_TypeDef *UARTx, uint32_t INTMask, uint8_t NewState);
uint8_t UART_GetINTStatus(UART_TypeDef *UARTx, uint32_t INTMask);
void UART_ClearINTStatus(UART_TypeDef *UARTx, uint32_t INTMask);
/* UART Exported Functions Group3: 
                                   Transfer datas ----------------------------*/
void UART_SendData(UART_TypeDef *UARTx, uint8_t ch);
uint8_t UART_ReceiveData(UART_TypeDef *UARTx);
/* UART Exported Functions Group4: 
                                   MISC Configuration ------------------------*/
void UART_BaudrateConfig(UART_TypeDef *UARTx, uint32_t BaudRate);
void UART_Cmd(UART_TypeDef *UARTx, uint32_t Mode, uint32_t NewState);
void UART_GetConfigINFO(UART_TypeDef *UARTx, UART_ConfigINFOType *ConfigInfo);
                            
                                     
#ifdef __cplusplus
}
#endif
     
#endif  /* __LIB_UART_H */

/*********************************** END OF FILE ******************************/