1 /**
2 ******************************************************************************
3 * @file    HAL_uart.h
4 * @author  AE Team
5 * @version V1.1.0
6 * @date    28/08/2019
7 * @brief   This file contains all the functions prototypes for the UART
8 *          firmware library.
9 ******************************************************************************
10 * @copy
11 *
12 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
14 * TIME. AS A RESULT, MindMotion SHALL NOT BE HELD LIABLE FOR ANY
15 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
16 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
17 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
18 *
19 * <h2><center>&copy; COPYRIGHT 2019 MindMotion</center></h2>
20 */
21 
22 /* Define to prevent recursive inclusion -------------------------------------*/
23 #ifndef __HAL_UART_H
24 #define __HAL_UART_H
25 
26 /* Includes ------------------------------------------------------------------*/
27 #include "HAL_device.h"
28 
29 /** @addtogroup StdPeriph_Driver
30 * @{
31 */
32 
33 /** @addtogroup UART
34 * @{
35 */
36 
37 /** @defgroup UART_Exported_Types
38 * @{
39 */
40 
41 /**
42 * @brief  UART Init Structure definition
43 */
44 
45 typedef struct
46 {
47     uint32_t UART_BaudRate;
48     uint16_t UART_WordLength;
49     uint16_t UART_StopBits;
50     uint16_t UART_Parity;
51     uint16_t UART_Mode;
52     uint16_t UART_HardwareFlowControl;
53 } UART_InitTypeDef;
54 
55 
56 /**
57 * @}
58 */
59 
60 /** @defgroup UART_Exported_Constants
61 * @{
62 */
63 
64 #define IS_UART_ALL_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH)) == UART1_BASE) || \
65                                     ((*(uint32_t*)&(PERIPH)) == UART2_BASE) || \
66                                     ((*(uint32_t*)&(PERIPH)) == UART3_BASE))
67 #define IS_UART_123_PERIPH(PERIPH) (((*(uint32_t*)&(PERIPH)) == UART1_BASE) || \
68                                     ((*(uint32_t*)&(PERIPH)) == UART2_BASE) || \
69                                     ((*(uint32_t*)&(PERIPH)) == UART3_BASE))
70 
71 /** @defgroup UART_Word_Length
72 * @{
73 */
74 
75 #define UART_WordLength_5b                  ((uint16_t)0x0000)
76 #define UART_WordLength_6b                  ((uint16_t)0x0010)
77 #define UART_WordLength_7b                  ((uint16_t)0x0020)
78 #define UART_WordLength_8b                  ((uint16_t)0x0030)
79 
80 
81 #define IS_UART_WORD_LENGTH(LENGTH) (((LENGTH) == UART_WordLength_5b) || \
82                                      ((LENGTH) == UART_WordLength_6b) || \
83                                      ((LENGTH) == UART_WordLength_7b) || \
84                                      ((LENGTH) == UART_WordLength_8b))
85 /**
86 * @}
87 */
88 
89 /** @defgroup UART_Stop_Bits
90 * @{
91 */
92 
93 #define UART_StopBits_1                     ((uint16_t)0x0000)
94 #define UART_StopBits_2                     ((uint16_t)0x0004)
95 
96 #define IS_UART_STOPBITS(STOPBITS) (((STOPBITS) == UART_StopBits_1) || \
97                                     ((STOPBITS) == UART_StopBits_2))
98 
99 /**
100 * @}
101 */
102 
103 /** @defgroup UART_Parity
104 * @{
105 */
106 
107 #define UART_Parity_No                      ((uint16_t)0x0000)
108 #define UART_Parity_Even                    ((uint16_t)0x0003)
109 #define UART_Parity_Odd                     ((uint16_t)0x0001)
110 #define IS_UART_PARITY(PARITY) (((PARITY) == UART_Parity_No) || \
111                                 ((PARITY) == UART_Parity_Even) || \
112                                 ((PARITY) == UART_Parity_Odd))
113 /**
114 * @}
115 */
116 
117 /** @defgroup UART_Mode
118 * @{
119 */
120 
121 #define UART_Mode_Rx                        ((uint16_t)0x0008)
122 #define UART_Mode_Tx                        ((uint16_t)0x0010)
123 #define IS_UART_MODE(MODE) ((((MODE) & (uint16_t)0xFFE7) == 0x00) && ((MODE) != (uint16_t)0x00))
124 
125 #define UART_EN                             ((uint16_t)0x0001)
126 
127 /**
128 * @}
129 */
130 
131 /** @defgroup UART_Hardware_Flow_Control
132 * @{
133 */
134 #define UART_HardwareFlowControl_None       ((uint16_t)0x0000)
135 
136 #define IS_UART_HARDWARE_FLOW_CONTROL(CONTROL)\
137     (((CONTROL) == UART_HardwareFlowControl_None) || \
138      ((CONTROL) == UART_HardwareFlowControl_RTS) || \
139      ((CONTROL) == UART_HardwareFlowControl_CTS) || \
140      ((CONTROL) == UART_HardwareFlowControl_RTS_CTS))
141 
142 /** @defgroup UART_Interrupt_definition
143 * @{
144 */
145 
146 
147 #define UART_IT_ERR            ((uint16_t)0x0020)
148 #define UART_IT_PE             ((uint16_t)0x0010)
149 #define UART_OVER_ERR          ((uint16_t)0x0008)
150 #define UART_TIMEOUT_ERR       ((uint16_t)0x0004)
151 #define UART_IT_RXIEN          ((uint16_t)0x0002)
152 #define UART_IT_TXIEN          ((uint16_t)0x0001)
153 
154 #define IS_UART_CONFIG_IT(IT) (((IT) == UART_IT_PE) || ((IT) == UART_IT_TXIEN) || \
155                                ((IT) == UART_IT_RXIEN) || ((IT) == UART_IT_ERR))
156 
157 #define IS_UART_GET_IT(IT) (((IT) == UART_IT_PE) || ((IT) == UART_IT_TXIEN) || \
158                             ((IT) == UART_IT_ERR) || ((IT) == UART_IT_RXIEN) || \
159                             ((IT) == UART_OVER_ERR) || ((IT) == UART_TIMEOUT_ERR))
160 
161 #define IS_UART_CLEAR_IT(IT) ((IT) == UART_IT_RXIEN)
162 
163 
164 /**
165 * @}
166 */
167 
168 /** @defgroup UART_DMA_Requests
169 * @{
170 */
171 #define UART_DMAReq_EN                      ((uint16_t)0x0002)
172 
173 #define IS_UART_DMAREQ(DMAREQ) ((((DMAREQ) & (uint16_t)0xFFFD) == 0x00) && ((DMAREQ) != (uint16_t)0x00))
174 
175 /**
176 * @}
177 */
178 
179 
180 /** @defgroup UART_Flags
181 * @{
182 */
183 
184 
185 #define UART_FLAG_TXEMPTY                   ((uint16_t)0x0008)
186 #define UART_FLAG_TXFULL                    ((uint16_t)0x0004)
187 #define UART_FLAG_RXAVL                     ((uint16_t)0x0002)
188 #define UART_FLAG_TXEPT                     ((uint16_t)0x0001)
189 
190 
191 #define IS_UART_FLAG(FLAG) (((FLAG) == UART_FLAG_TXEMPTY) || ((FLAG) == UART_FLAG_TXFULL) || \
192                             ((FLAG) == UART_FLAG_RXAVL) || ((FLAG) == UART_FLAG_TXEPT))
193 
194 
195 #define IS_UART_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0x00FF) == 0x00) && ((FLAG) != (uint16_t)0x00))
196 
197 #define IS_UART_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0) && ((BAUDRATE) < 0x0044AA21))
198 #define IS_UART_ADDRESS(ADDRESS) ((ADDRESS) <= 0xF)
199 #define IS_UART_DATA(DATA) ((DATA) <= 0x1FF)
200 
201 /**
202 * @}
203 */
204 
205 /**
206 * @}
207 */
208 
209 /** @defgroup UART_Exported_Macros
210 * @{
211 */
212 
213 /**
214 * @}
215 */
216 
217 /** @defgroup UART_Exported_Functions
218 * @{
219 */
220 
221 void UART_DeInit(UART_TypeDef* UARTx);
222 void UART_Init(UART_TypeDef* UARTx, UART_InitTypeDef* UART_InitStruct);
223 void UART_StructInit(UART_InitTypeDef* UART_InitStruct);
224 void UART_Cmd(UART_TypeDef* UARTx, FunctionalState NewState);
225 void UART_ITConfig(UART_TypeDef* UARTx, uint16_t UART_IT, FunctionalState NewState);
226 void UART_DMACmd(UART_TypeDef* UARTx, uint16_t UART_DMAReq, FunctionalState NewState);
227 void UART_SendData(UART_TypeDef* UARTx, uint16_t Data);
228 uint16_t UART_ReceiveData(UART_TypeDef* UARTx);
229 FlagStatus UART_GetFlagStatus(UART_TypeDef* UARTx, uint16_t UART_FLAG);
230 void UART_ClearFlag(UART_TypeDef* UARTx, uint16_t UART_FLAG);
231 ITStatus UART_GetITStatus(UART_TypeDef* UARTx, uint16_t UART_IT);
232 void UART_ClearITPendingBit(UART_TypeDef* UARTx, uint16_t UART_IT);
233 
234 #endif /* __HAL_UART_H */
235 /**
236 * @}
237 */
238 
239 /**
240 * @}
241 */
242 
243 /**
244 * @}
245 */
246 
247 /*-------------------------(C) COPYRIGHT 2019 MindMotion ----------------------*/
248