📄 uart.h
字号:
/****************************************Copyright (c)**************************************************
**
**
** 杭州央海软件科技有限公司
**
** http://www.armgcc.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: uart.h
** 创 建 人: 罗辉联
** 创建日期: 2006年5月10日
** 描 述: 该文件包含了所有UART功能函数原型与所需要的常量
**
**--------------历史版本--------------------------------------------------------------------------------
** 创 建 人: 罗辉联
** 版 本: V1.0
** 日 期: 2006年5月10日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#ifndef __UART_H
#define __UART_H
#include "cpu_cfg.h"
#include "rccu.h"
#ifdef __cplusplus
extern "C" {
#endif
#if EN_ARM_UART > 0 //决定是否编译该文件
/************************************** 宏定义,常量定义 ******************************************/
//说明: 通过带参数的宏来访问不同串口的同一个名称的寄存器
#define UARTx_BR(uart) (*((volatile unsigned short *)(0xC0004000+(uart)*0x1000+BR)))
#define UARTx_TxBUFR(uart) (*((volatile unsigned short *)(0xC0004000+(uart)*0x1000+TxBUFR)))
#define UARTx_RxBUFR(uart) (*((volatile unsigned short *)(0xC0004000+(uart)*0x1000+RxBUFR)))
#define UARTx_CR(uart) (*((volatile unsigned short *)(0xC0004000+(uart)*0x1000+CR)))
#define UARTx_IER(uart) (*((volatile unsigned short *)(0xC0004000+(uart)*0x1000+IER)))
#define UARTx_SR(uart) (*((volatile unsigned short *)(0xC0004000+(uart)*0x1000+SR)))
#define UARTx_GTR(uart) (*((volatile unsigned short *)(0xC0004000+(uart)*0x1000+GTR)))
#define UARTx_TOR(uart) (*((volatile unsigned short *)(0xC0004000+(uart)*0x1000+TOR)))
#define UARTx_TxRSTR(uart) (*((volatile unsigned short *)(0xC0004000+(uart)*0x1000+TxRSTR)))
#define UARTx_RxRSTR(uart) (*((volatile unsigned short *)(0xC0004000+(uart)*0x1000+RxRSTR)))
#define DUMMY 0
// UART flags definition
#define UART_TXFULL 0x0200
#define UART_RXHALFFULL 0x0100
#define UART_TIMEOUTIDLE 0x0080
#define UART_TIMEOUTNOTEMPTY 0x0040
#define UART_OVERRUNERROR 0x0020
#define UART_FRAMEERROR 0x0010
#define UART_PARITYERROR 0x0008
#define UART_TXHALFEMPTY 0x0004
#define UART_TXEMPTY 0x0002
#define UART_RXBUFFULL 0x0001
// CR regiter bit definition
#define UART_FIFOENABLEBIT 10
#define UART_RXENABLEBIT 8
#define UART_RUNBIT 7
#define UART_LOOPBACKBIT 6
#define UART_PARITYODDBIT 5
#define UART_STOPBITS 3
// Stop bits definition
#define UART_05STOPBITS 0x00
#define UART_10STOPBITS (0x01<<3)
#define UART_15STOPBITS (0x02<<3)
#define UART_20STOPBITS (0x03<<3)
// Modes definition
#define UART_8BITSDATA 0x01
#define UART_7BITSDATA 0x03
#define UART_9BITSDATA 0x04
#define UART_8BITSDATAWAKEUP 0x05
#define UART_8BITSDATAPARITY 0x07
#define UART0_RX_PIN (8) // TQFP 144 pin N?143
#define UART0_TX_PIN (9) // TQFP 144 pin N?144
#define UART1_RX_PIN (10) // TQFP 144 pin N?1
#define UART1_TX_PIN (11) // TQFP 144 pin N?3
#define UART2_RX_PIN (13) // TQFP 144 pin N?9
#define UART2_TX_PIN (14) // TQFP 144 pin N?10
#define UART3_RX_PIN (1) // TQFP 144 pin N?123
#define UART3_TX_PIN (0) // TQFP 144 pin N?124
/************************************** 枚举类型定义 *******************************************/
typedef enum { UART0 =0, UART1,UART2, UART3 } UART_CHANNELS_T;
typedef enum { UART_EVEN_PARITY = 0x0000, UART_ODD_PARITY = 0x0020, UART_NO_PARITY } UART_PARITY_T;
typedef enum { UART_0_5_STOPBITS = 0x00, UART_1_0_STOPBITS = 0x08, UART_1_5_STOPBITS = 0x10, UART_2_0_STOPBITS = 0x18 }UARTSTOPBITS_T;
typedef enum { UARTM_8D = 0x01, UARTM_7D_P = 0x03, UARTM_9D = 0x04, UARTM_8D_W = 0x05, UARTM_8D_P = 0x07 }UART_MODE_T;
typedef enum { UART_RXFIFO, UART_TXFIFO } UART_FIFO_T;
/************************************** 结构体类型定义 ******************************************/
/********************************** 全局外部函数原型声明 *****************************************/
/*********************************************************************************************************
;** 函数名称: UART_Reset
;** 功能描述: 复位时串口默认配置
;**
;** 参 数: uart:UART0 UART1 UART2 UART3
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_Reset(UART_CHANNELS_T uart);
/*********************************************************************************************************
;** 函数名称: UART_AttributeConfig
;** 功能描述: 配置串口属性
;**
;** 参 数: uart: UART0 UART1 UART2 UART3
;** baud_rate: 根据需要填写
;** parity : UART_EVEN_PARITY UART_ODD_PARITY UART_NO_PARITY
;** stop_bits: UART_0_5_STOPBITS UART_1_0_STOPBITS UART_1_5_STOPBITS UART_2_0_STOPBITS
;** mode : UARTM_8D UARTM_7D_P UARTM_9D UARTM_8D_W UARTM_8D_P
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_AttributeConfig(UART_CHANNELS_T uart, UWORD32 baud_rate, UART_PARITY_T parity,
UARTSTOPBITS_T stop_bits, UART_MODE_T mode);
/*********************************************************************************************************
;** 函数名称: UART_ITConfig
;** 功能描述: 串口中断配置
;**
;** 参 数: uart:UART0 UART1 UART2 UART3
;** uart_flag: 中断允许禁止标志
;** new_status: ENABLE 或 DISABLE
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_ITConfig(UART_CHANNELS_T uart, UWORD16 uart_flag, CONFIG_STATUS_T new_status);
/*********************************************************************************************************
;** 函数名称: UART_FIFOConfig
;** 功能描述: 串口FIFO配置
;**
;** 参 数: uart:UART0 UART1 UART2 UART3
;** new_status: ENABLE 或 DISABLE
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_FIFOConfig(UART_CHANNELS_T uart, CONFIG_STATUS_T new_status);
/*********************************************************************************************************
;** 函数名称: UART_FIFOReset
;** 功能描述: 串口FIFO复位
;**
;** 参 数: uart:UART0 UART1 UART2 UART3
;** FIFO:UART_RxFIFO UART_TxFIFO
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_FIFOReset(UART_CHANNELS_T uart, UART_FIFO_T FIFO);
/*********************************************************************************************************
;** 函数名称: UART_ONOFFConfig
;** 功能描述: 串口开与关配置
;**
;** 参 数: uart:UART0 UART1 UART2 UART3
;** new_status: ENABLE 或 DISABLE
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_ONOFFConfig(UART_CHANNELS_T uart, CONFIG_STATUS_T new_status);
/*********************************************************************************************************
;** 函数名称: UART_LoopbackConfig
;** 功能描述: 串口开与关配置
;**
;** 参 数: uart:UART0 UART1 UART2 UART3
;** new_status: Loopback mode ENABLE 或 DISABLE
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_LoopbackConfig(UART_CHANNELS_T uart, CONFIG_STATUS_T new_status);
/*********************************************************************************************************
;** 函数名称: UART_SmartCardConfig
;** 功能描述: SmartCard模式选择
;**
;** 参 数: uart:UART0 UART1 UART2 UART3
;** new_status: SmartCard mode ENABLE 或 DISABLE
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -