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 ******************************/
|