//////////////////////////////////////////////////////////////////////////////// /// @file hal_uart.h /// @author AE TEAM /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE UART /// FIRMWARE LIBRARY. //////////////////////////////////////////////////////////////////////////////// /// @attention /// /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS. /// ///

© COPYRIGHT MINDMOTION

//////////////////////////////////////////////////////////////////////////////// // Define to prevent recursive inclusion #ifndef __HAL_UART_H #define __HAL_UART_H // Files includes #include "reg_uart.h" //////////////////////////////////////////////////////////////////////////////// /// @addtogroup MM32_Hardware_Abstract_Layer /// @{ /////////////////////////////////////1/////////////////////////////////////////// /// @defgroup UART_HAL /// @brief UART HAL modules /// @{ //////////////////////////////////////////////////////////////////////////////// /// @defgroup UART_Exported_Types /// @{ /// //////////////////////////////////////////////////////////////////////////////// /// @brief UART Word Length Enumerate definition /// @anchor UART_Word_Length //////////////////////////////////////////////////////////////////////////////// typedef enum { UART_WordLength_5b = 0U, UART_WordLength_6b = 1U << UART_CCR_CHAR_Pos, UART_WordLength_7b = 2U << UART_CCR_CHAR_Pos, UART_WordLength_8b = 3U << UART_CCR_CHAR_Pos } UART_WordLength_TypeDef; //////////////////////////////////////////////////////////////////////////////// /// @brief UART Stop Bits Enumerate definition /// @anchor UART_Stop_Bits //////////////////////////////////////////////////////////////////////////////// typedef enum { UART_StopBits_1 = 0U, UART_StopBits_2 = UART_CCR_SPB, UART_StopBits_0_5 = UART_CCR_SPB1, UART_StopBits_1_5 = UART_CCR_SPB1 | UART_CCR_SPB0, } UART_Stop_Bits_TypeDef; //////////////////////////////////////////////////////////////////////////////// /// @brief UART Parity Enumerate definition /// @anchor UART_Parity //////////////////////////////////////////////////////////////////////////////// typedef enum { UART_Parity_No = 0U, UART_Parity_Even = UART_CCR_PEN | UART_CCR_PSEL, UART_Parity_Odd = UART_CCR_PEN } UART_Parity_TypeDef; //////////////////////////////////////////////////////////////////////////////// /// @brief UART Hardware Flow Control Enumerate definition /// @anchor UART_Hardware_Flow_Control //////////////////////////////////////////////////////////////////////////////// typedef enum { UART_HWFlowControl_None = 0U, // UART_HWFlowControl_RTS = UART_GCR_AUTOFLOW, // UART_HWFlowControl_CTS = UART_GCR_AUTOFLOW, UART_HWFlowControl_RTS_CTS = UART_GCR_AUTOFLOW } UART_HW_FLOWCONTROL_TypeDef; typedef enum { UART_WakeUp_IdleLine = 0U, // UART_WakeUp_AddressMark = UART_CCR_WAKE } UART_WakeUp_TypeDef; typedef enum { UART_9bit_Polarity_Low = 0U, // UART_9bit_Polarity_High = UART_CCR_B8POL } UART_9bit_Polarity_TypeDef; //////////////////////////////////////////////////////////////////////////////// /// @brief UART Auto BaudRate definition //////////////////////////////////////////////////////////////////////////////// typedef enum { Data_F8 = 0, Data_FE, ABRMODE_FALLING_TO_RISINGEDGE1BIT, ABRMODE_FALLING_TO_RISINGEDGE2BIT, ABRMODE_FALLING_TO_RISINGEDGE4BIT, ABRMODE_FALLING_TO_RISINGEDGE8BIT, ABRMODE_FALLING_TO_FALLINGEDGE2BIT, ABRMODE_FALLING_TO_FALLINGEDGE4BIT, ABRMODE_FALLING_TO_FALLINGEDGE8BIT, ABRMODE_STARTBIT, ABRMODE_VALUE0X55, ABRMODE_VALUE0x7F, ABRMODE_VALUE0X80, ABRMODE_VALUE0XF7, ABRMODE_VALUE0XF8 = Data_F8, ABRMODE_VALUE0XFE = Data_FE, ABRMODE_VALUE0XFF, } UART_AutoBaud_TypeDef; //////////////////////////////////////////////////////////////////////////////// /// @brief UART Init Structure definition //////////////////////////////////////////////////////////////////////////////// typedef struct { union { u32 BaudRate; ///< This member configures the UART communication baud rate. u32 UART_BaudRate; }; union { UART_WordLength_TypeDef WordLength; ///< Specifies the number of data bits transmitted or received in a frame. u16 UART_WordLength; }; union { UART_Stop_Bits_TypeDef StopBits; ///< Specifies the number of stop bits transmitted. u16 UART_StopBits; }; union { UART_Parity_TypeDef Parity; ///< Specifies the parity mode. u16 UART_Parity; }; union { u16 Mode; ///< Specifies wether the Receive or Transmit mode is u16 UART_Mode; }; union { UART_HW_FLOWCONTROL_TypeDef HWFlowControl; ///< Specifies wether the hardware flow control mode is enabled or disabled. u16 UART_HardwareFlowControl; }; } UART_InitTypeDef; /// @} //////////////////////////////////////////////////////////////////////////////// /// @defgroup UART_Exported_Constants /// @{ /// @} //////////////////////////////////////////////////////////////////////////////// /// @defgroup UART_Exported_Variables /// @{ #ifdef _HAL_UART_C_ #define GLOBAL #else #define GLOBAL extern #endif #undef GLOBAL /// @} //////////////////////////////////////////////////////////////////////////////// /// @defgroup UART_Exported_Functions /// @{ void UART_DeInit(UART_TypeDef* uart); void UART_Init(UART_TypeDef* uart, UART_InitTypeDef* init_struct); void UART_StructInit(UART_InitTypeDef* init_struct); void UART_Cmd(UART_TypeDef* uart, FunctionalState state); void UART_ITConfig(UART_TypeDef* uart, u16 it, FunctionalState state); void UART_DMACmd(UART_TypeDef* uart, u16 dma_request, FunctionalState state); void UART_SendData(UART_TypeDef* uart, u16 Data); void UART_ClearITPendingBit(UART_TypeDef* uart, u16 it); u16 UART_ReceiveData(UART_TypeDef* uart); FlagStatus UART_GetFlagStatus(UART_TypeDef* uart, u16 flag); ITStatus UART_GetITStatus(UART_TypeDef* uart, u16 it); void UART_WakeUpConfig(UART_TypeDef* uart, UART_WakeUp_TypeDef mode); void UART_ReceiverWakeUpCmd(UART_TypeDef* uart, FunctionalState state); void UART_SetRXAddress(UART_TypeDef* uart, u8 address); void UART_SetRXMASK(UART_TypeDef* uart, u8 address); void UART_Enable9bit(UART_TypeDef* uart, FunctionalState state); void UART_Set9bitLevel(UART_TypeDef* uart, FunctionalState state); void UART_Set9bitPolarity(UART_TypeDef* uart, UART_9bit_Polarity_TypeDef polarity); void UART_Set9bitAutomaticToggle(UART_TypeDef* uart, FunctionalState state); void UART_HalfDuplexCmd(UART_TypeDef* uart, FunctionalState state); void UART_SetGuardTime(UART_TypeDef* uart, u8 guard_time); void UART_SmartCardCmd(UART_TypeDef* uart, FunctionalState state); void UART_SmartCardNACKCmd(UART_TypeDef* uart, FunctionalState state); void UART_SendBreak(UART_TypeDef* uart); void UART_AutoBaudRateCmd(UART_TypeDef* uart, FunctionalState state); void UART_AutoBaudRateSet(UART_TypeDef* uart, UART_AutoBaud_TypeDef value, FunctionalState state); /// @} /// @} /// @} //////////////////////////////////////////////////////////////////////////////// #endif // __HAL_UART_H ////////////////////////////////////////////////////////////////////////////////