?? 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 + -