123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- ////////////////////////////////////////////////////////////////////////////////
- /// @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.
- ///
- /// <H2><CENTER>© COPYRIGHT MINDMOTION </CENTER></H2>
- ////////////////////////////////////////////////////////////////////////////////
- // 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
- ////////////////////////////////////////////////////////////////////////////////
|