1 //////////////////////////////////////////////////////////////////////////////// 2 /// @file hal_uart.h 3 /// @author AE TEAM 4 /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE UART 5 /// FIRMWARE LIBRARY. 6 //////////////////////////////////////////////////////////////////////////////// 7 /// @attention 8 /// 9 /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE 10 /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE 11 /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR 12 /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH 13 /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN 14 /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS. 15 /// 16 /// <H2><CENTER>© COPYRIGHT MINDMOTION </CENTER></H2> 17 //////////////////////////////////////////////////////////////////////////////// 18 19 // Define to prevent recursive inclusion 20 #ifndef __HAL_UART_H 21 #define __HAL_UART_H 22 23 // Files includes 24 #include "reg_uart.h" 25 26 //////////////////////////////////////////////////////////////////////////////// 27 /// @addtogroup MM32_Hardware_Abstract_Layer 28 /// @{ 29 30 /////////////////////////////////////1/////////////////////////////////////////// 31 /// @defgroup UART_HAL 32 /// @brief UART HAL modules 33 /// @{ 34 35 36 //////////////////////////////////////////////////////////////////////////////// 37 /// @defgroup UART_Exported_Types 38 /// @{ 39 /// 40 41 //////////////////////////////////////////////////////////////////////////////// 42 /// @brief UART Word Length Enumerate definition 43 /// @anchor UART_Word_Length 44 //////////////////////////////////////////////////////////////////////////////// 45 typedef enum { 46 UART_WordLength_5b = 0U, 47 UART_WordLength_6b = 1U << UART_CCR_CHAR_Pos, 48 UART_WordLength_7b = 2U << UART_CCR_CHAR_Pos, 49 UART_WordLength_8b = 3U << UART_CCR_CHAR_Pos 50 } UART_WordLength_TypeDef; 51 52 //////////////////////////////////////////////////////////////////////////////// 53 /// @brief UART Stop Bits Enumerate definition 54 /// @anchor UART_Stop_Bits 55 //////////////////////////////////////////////////////////////////////////////// 56 typedef enum { 57 UART_StopBits_1 = 0U, 58 UART_StopBits_2 = UART_CCR_SPB, 59 60 UART_StopBits_0_5 = UART_CCR_SPB1, 61 UART_StopBits_1_5 = UART_CCR_SPB1 | UART_CCR_SPB0, 62 } UART_Stop_Bits_TypeDef; 63 64 //////////////////////////////////////////////////////////////////////////////// 65 /// @brief UART Parity Enumerate definition 66 /// @anchor UART_Parity 67 //////////////////////////////////////////////////////////////////////////////// 68 typedef enum { 69 UART_Parity_No = 0U, 70 UART_Parity_Even = UART_CCR_PEN | UART_CCR_PSEL, 71 UART_Parity_Odd = UART_CCR_PEN 72 } UART_Parity_TypeDef; 73 74 //////////////////////////////////////////////////////////////////////////////// 75 /// @brief UART Hardware Flow Control Enumerate definition 76 /// @anchor UART_Hardware_Flow_Control 77 //////////////////////////////////////////////////////////////////////////////// 78 typedef enum { 79 UART_HWFlowControl_None = 0U, 80 81 // UART_HWFlowControl_RTS = UART_GCR_AUTOFLOW, 82 // UART_HWFlowControl_CTS = UART_GCR_AUTOFLOW, 83 84 UART_HWFlowControl_RTS_CTS = UART_GCR_AUTOFLOW 85 } UART_HW_FLOWCONTROL_TypeDef; 86 87 typedef enum { 88 UART_WakeUp_IdleLine = 0U, // 89 UART_WakeUp_AddressMark = UART_CCR_WAKE 90 } UART_WakeUp_TypeDef; 91 92 typedef enum { 93 UART_9bit_Polarity_Low = 0U, // 94 UART_9bit_Polarity_High = UART_CCR_B8POL 95 } UART_9bit_Polarity_TypeDef; 96 97 //////////////////////////////////////////////////////////////////////////////// 98 /// @brief UART Auto BaudRate definition 99 //////////////////////////////////////////////////////////////////////////////// 100 typedef enum { 101 Data_F8 = 0, 102 Data_FE, 103 ABRMODE_FALLING_TO_RISINGEDGE1BIT, 104 ABRMODE_FALLING_TO_RISINGEDGE2BIT, 105 ABRMODE_FALLING_TO_RISINGEDGE4BIT, 106 ABRMODE_FALLING_TO_RISINGEDGE8BIT, 107 ABRMODE_FALLING_TO_FALLINGEDGE2BIT, 108 ABRMODE_FALLING_TO_FALLINGEDGE4BIT, 109 ABRMODE_FALLING_TO_FALLINGEDGE8BIT, 110 ABRMODE_STARTBIT, 111 ABRMODE_VALUE0X55, 112 ABRMODE_VALUE0x7F, 113 ABRMODE_VALUE0X80, 114 ABRMODE_VALUE0XF7, 115 ABRMODE_VALUE0XF8 = Data_F8, 116 ABRMODE_VALUE0XFE = Data_FE, 117 ABRMODE_VALUE0XFF, 118 } UART_AutoBaud_TypeDef; 119 //////////////////////////////////////////////////////////////////////////////// 120 /// @brief UART Init Structure definition 121 //////////////////////////////////////////////////////////////////////////////// 122 typedef struct { 123 union { 124 u32 BaudRate; ///< This member configures the UART communication baud rate. 125 u32 UART_BaudRate; 126 }; 127 union { 128 UART_WordLength_TypeDef WordLength; ///< Specifies the number of data bits transmitted or received in a frame. 129 u16 UART_WordLength; 130 }; 131 union { 132 UART_Stop_Bits_TypeDef StopBits; ///< Specifies the number of stop bits transmitted. 133 u16 UART_StopBits; 134 }; 135 union { 136 UART_Parity_TypeDef Parity; ///< Specifies the parity mode. 137 u16 UART_Parity; 138 }; 139 union { 140 u16 Mode; ///< Specifies wether the Receive or Transmit mode is 141 u16 UART_Mode; 142 }; 143 union { 144 UART_HW_FLOWCONTROL_TypeDef HWFlowControl; ///< Specifies wether the hardware flow control mode is enabled or disabled. 145 u16 UART_HardwareFlowControl; 146 }; 147 } UART_InitTypeDef; 148 149 /// @} 150 151 //////////////////////////////////////////////////////////////////////////////// 152 /// @defgroup UART_Exported_Constants 153 /// @{ 154 155 /// @} 156 157 //////////////////////////////////////////////////////////////////////////////// 158 /// @defgroup UART_Exported_Variables 159 /// @{ 160 #ifdef _HAL_UART_C_ 161 162 #define GLOBAL 163 #else 164 #define GLOBAL extern 165 #endif 166 167 #undef GLOBAL 168 /// @} 169 170 //////////////////////////////////////////////////////////////////////////////// 171 /// @defgroup UART_Exported_Functions 172 /// @{ 173 void UART_DeInit(UART_TypeDef* uart); 174 void UART_Init(UART_TypeDef* uart, UART_InitTypeDef* init_struct); 175 void UART_StructInit(UART_InitTypeDef* init_struct); 176 void UART_Cmd(UART_TypeDef* uart, FunctionalState state); 177 void UART_ITConfig(UART_TypeDef* uart, u16 it, FunctionalState state); 178 void UART_DMACmd(UART_TypeDef* uart, u16 dma_request, FunctionalState state); 179 void UART_SendData(UART_TypeDef* uart, u16 Data); 180 void UART_ClearITPendingBit(UART_TypeDef* uart, u16 it); 181 182 u16 UART_ReceiveData(UART_TypeDef* uart); 183 FlagStatus UART_GetFlagStatus(UART_TypeDef* uart, u16 flag); 184 185 ITStatus UART_GetITStatus(UART_TypeDef* uart, u16 it); 186 187 void UART_WakeUpConfig(UART_TypeDef* uart, UART_WakeUp_TypeDef mode); 188 void UART_ReceiverWakeUpCmd(UART_TypeDef* uart, FunctionalState state); 189 void UART_SetRXAddress(UART_TypeDef* uart, u8 address); 190 void UART_SetRXMASK(UART_TypeDef* uart, u8 address); 191 void UART_Enable9bit(UART_TypeDef* uart, FunctionalState state); 192 void UART_Set9bitLevel(UART_TypeDef* uart, FunctionalState state); 193 void UART_Set9bitPolarity(UART_TypeDef* uart, UART_9bit_Polarity_TypeDef polarity); 194 void UART_Set9bitAutomaticToggle(UART_TypeDef* uart, FunctionalState state); 195 void UART_HalfDuplexCmd(UART_TypeDef* uart, FunctionalState state); 196 void UART_SetGuardTime(UART_TypeDef* uart, u8 guard_time); 197 void UART_SmartCardCmd(UART_TypeDef* uart, FunctionalState state); 198 void UART_SmartCardNACKCmd(UART_TypeDef* uart, FunctionalState state); 199 void UART_SendBreak(UART_TypeDef* uart); 200 void UART_AutoBaudRateCmd(UART_TypeDef* uart, FunctionalState state); 201 void UART_AutoBaudRateSet(UART_TypeDef* uart, UART_AutoBaud_TypeDef value, FunctionalState state); 202 203 /// @} 204 205 /// @} 206 207 /// @} 208 209 //////////////////////////////////////////////////////////////////////////////// 210 #endif // __HAL_UART_H 211 //////////////////////////////////////////////////////////////////////////////// 212