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>© 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