123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /***************************************************************
- *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd.
- *文件名: lib_uart.h
- *作 者: Liut
- *版 本: V1.00
- *日 期: 2017/07/14
- *描 述: UART模块库函数头文件
- *备 注: 适用于 ES8P508x芯片
- 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
- ***************************************************************/
- #ifndef __LIBUART_H__
- #define __LIBUART_H__
- #include "ES8P508x.h"
- #include "type.h"
- #include "system_ES8P508x.h"
- /* 发送帧停止位选择 */
- typedef enum
- {
- UART_StopBits_1 = 0x0 , //发送帧停止位:1位
- UART_StopBits_2 = 0x1 , //发送帧停止位:2位
- }UART_TYPE_TXFS;
- /* 数据格式 */
- typedef enum
- {
- UART_DataMode_7 = 0x0 , //数据格式:7位数据
- UART_DataMode_8 = 0x1 , //数据格式:8位数据
- UART_DataMode_9 = 0x2 , //数据格式:9位数据
- UART_DataMode_7Odd = 0x4 , //数据格式:7位数据+奇校验
- UART_DataMode_7Even = 0x5 , //数据格式:7位数据+偶校验
- UART_DataMode_8Odd = 0x6 , //数据格式:8位数据+奇校验
- UART_DataMode_8Even = 0x7 , //数据格式:8位数据+偶校验
- }UART_TYPE_DATAMOD;
- /* 端口极性 */
- typedef enum
- {
- UART_Polar_Normal = 0x0 , //发送端口极性:正常
- UART_Polar_Opposite = 0x1 , //发送端口极性:反向
- }UART_TYPE_RTXP;
- /* 波特率发生器时钟选择 */
- typedef enum
- {
- UART_Clock_1 = 0x1 , //波特率发生器时钟:PCLK
- UART_Clock_2 = 0x2 , //波特率发生器时钟:PCLK/2
- UART_Clock_4 = 0x3 , //波特率发生器时钟:PCLK/4
- UART_Clock_8 = 0x4 , //波特率发生器时钟:PCLK/8
-
- }UART_TYPE_BCS;
- /* UART初始化配置结构体定义 */
- typedef struct
- {
- UART_TYPE_TXFS UART_StopBits; //发送帧停止位选择
- UART_TYPE_DATAMOD UART_TxMode; //发送数据帧格式
- UART_TYPE_RTXP UART_TxPolar; //发送端口极性
- UART_TYPE_DATAMOD UART_RxMode; //接收数据帧格式
- UART_TYPE_RTXP UART_RxPolar; //接收端口极性
- uint32_t UART_BaudRate; //传输波特率
- UART_TYPE_BCS UART_ClockSet; //波特率发生器时钟选择
- }UART_InitStruType;
- /* 中断选择 */
- typedef enum
- {
- UART_IT_TB = 0x0001 ,
- UART_IT_RB = 0x0002 ,
- UART_IT_RO = 0x0004 ,
- UART_IT_FE = 0x0008 ,
- UART_IT_PE = 0x0010 ,
- UART_IT_TBWE = 0x0020 ,
- UART_IT_TXIDLE = 0x1000 ,
- UART_IT_RXIDLE = 0x2000 ,
- }UART_TYPE_IT;
- /* 标志位 */
- typedef enum
- {
- UART_FLAG_TB = 0x0001 ,
- UART_FLAG_RB = 0x0002 ,
- UART_FLAG_RO = 0x0004 ,
- UART_FLAG_FE = 0x0008 ,
- UART_FLAG_PE = 0x0010 ,
- UART_FLAG_TBWE = 0x0020 ,
- UART_FLAG_TXIDLE = 0x1000 ,
- UART_FLAG_RXIDLE = 0x2000 ,
- }UART_TYPE_FLAG;
- /* 清除中断标志位 */
- typedef enum
- {
- UART_Clr_RO = 0x0004 ,
- UART_Clr_FE = 0x0008 ,
- UART_Clr_PE = 0x0010 ,
- UART_Clr_TBWE = 0x0020 ,
- }UART_CLR_IF;
- /* 发送、接收中断模式 */
- typedef enum
- {
- UART_TRBIM_Byte = 0x0 , //中断:字节
- UART_TRBIM_HalfWord = 0x1 , //中断:半字
- UART_TRBIM_Word = 0x2 , //中断:字
- }UART_TYPE_TRBIM;
- /*************UART模块宏定义************/
- /* 发送使能控制 */
- #define UART0_TxEnable() (UART0->CON.TXEN = 1)
- #define UART1_TxEnable() (UART1->CON.TXEN = 1)
- #define UART2_TxEnable() (UART2->CON.TXEN = 1)
- #define UART3_TxEnable() (UART3->CON.TXEN = 1)
- #define UART4_TxEnable() (UART4->CON.TXEN = 1)
- #define UART5_TxEnable() (UART5->CON.TXEN = 1)
- #define UART0_TxDisable() (UART0->CON.TXEN = 0)
- #define UART1_TxDisable() (UART1->CON.TXEN = 0)
- #define UART2_TxDisable() (UART2->CON.TXEN = 0)
- #define UART3_TxDisable() (UART3->CON.TXEN = 0)
- #define UART4_TxDisable() (UART4->CON.TXEN = 0)
- #define UART5_TxDisable() (UART5->CON.TXEN = 0)
- /* 接收使能控制 */
- #define UART0_RxEnable() (UART0->CON.RXEN = 1)
- #define UART1_RxEnable() (UART1->CON.RXEN = 1)
- #define UART2_RxEnable() (UART2->CON.RXEN = 1)
- #define UART3_RxEnable() (UART3->CON.RXEN = 1)
- #define UART4_RxEnable() (UART4->CON.RXEN = 1)
- #define UART5_RxEnable() (UART5->CON.RXEN = 1)
- #define UART0_RxDisable() (UART0->CON.RXEN = 0)
- #define UART1_RxDisable() (UART1->CON.RXEN = 0)
- #define UART2_RxDisable() (UART2->CON.RXEN = 0)
- #define UART3_RxDisable() (UART3->CON.RXEN = 0)
- #define UART4_RxDisable() (UART4->CON.RXEN = 0)
- #define UART5_RxDisable() (UART5->CON.RXEN = 0)
- /* 发送器复位 */
- #define UART0_TxRst() (UART0->CON.TRST = 1)
- #define UART1_TxRst() (UART1->CON.TRST = 1)
- #define UART2_TxRst() (UART2->CON.TRST = 1)
- #define UART3_TxRst() (UART3->CON.TRST = 1)
- #define UART4_TxRst() (UART4->CON.TRST = 1)
- #define UART5_TxRst() (UART5->CON.TRST = 1)
- /* 接收器复位 */
- #define UART0_RxRst() (UART0->CON.RRST = 1)
- #define UART1_RxRst() (UART1->CON.RRST = 1)
- #define UART2_RxRst() (UART2->CON.RRST = 1)
- #define UART3_RxRst() (UART3->CON.RRST = 1)
- #define UART4_RxRst() (UART4->CON.RRST = 1)
- #define UART5_RxRst() (UART5->CON.RRST = 1)
- /************UART模块函数声明***********/
- void UART_Init(UART_TypeDef* UARTx,UART_InitStruType* UART_InitStruct);
- void UART_ITConfig(UART_TypeDef* UARTx,UART_TYPE_IT UART_IT,TYPE_FUNCEN NewState);
- void UART_TBIMConfig(UART_TypeDef* UARTx,UART_TYPE_TRBIM Type);
- void UART_RBIMConfig(UART_TypeDef* UARTx,UART_TYPE_TRBIM Type);
- void UART_SendByte(UART_TypeDef* UARTx,uint8_t Temp08);
- void UART_SendHalfWord(UART_TypeDef* UARTx,uint16_t Temp16);
- void UART_SendWord(UART_TypeDef* UARTx,uint32_t Temp32);
- uint8_t UART_RecByte(UART_TypeDef* UARTx);
- uint16_t UART_RecHalfWord(UART_TypeDef* UARTx);
- uint32_t UART_RecWord(UART_TypeDef* UARTx);
- FlagStatus UART_GetFlagStatus(UART_TypeDef* UARTx,UART_TYPE_FLAG UART_Flag);
- ITStatus UART_GetITStatus(UART_TypeDef* UARTx,UART_TYPE_IT UART_Flag);
- void UART_ClearITPendingBit(UART_TypeDef* UARTx,UART_CLR_IF UART_Flag);
- #endif
- /*************************END OF FILE**********************/
|