?? uart.c
字號:
/****************************************Copyright (c)**************************************************
**
**
** 杭州央海軟件科技有限公司
**
** http://www.armgcc.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: uart.c
** 創 建 人: 羅輝聯
** 創建日期: 2006年5月10日
** 描 述: 該文件包含了UART的基本功能函數
**
**--------------歷史版本--------------------------------------------------------------------------------
** 創 建 人: 羅輝聯
** 版 本: V1.0
** 日 期: 2006年5月10日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "uart.h"
#if EN_ARM_UART > 0 //決定是否編譯該文件
/******************************************* 全局變量定義 ***********************************************/
/******************************************* 局部函數聲明 ***********************************************/
/*********************************************************************************************************
;** 函數名稱: UART_Reset
;** 功能描述: 復位時串口默認配置
;**
;** 參 數: uart:UART0 UART1 UART2 UART3
;**
;** 返 回 值: 無
;**
;** 作 者: 羅輝聯
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_Reset(UART_CHANNELS_T uart)
{
UARTx_IER(uart) = 0x00;
UARTx_CR(uart) = 0x00;
(void)UARTx_RxBUFR(uart);
UARTx_RxRSTR(uart) = 0xFFFF;
UARTx_TxRSTR(uart) = 0xFFFF;
}
/*********************************************************************************************************
;** 函數名稱: 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)
{
UARTx_CR(uart) = (UARTx_CR(uart) & 0xFFF8)|(UWORD16)mode; //配置串口模式
//設置串口波特率
UARTx_BR(uart) = (UWORD16)(RCCU_AnyClockObtain(RCCU_FCLK)/(16 * baud_rate));
UARTx_CR(uart) = (UARTx_CR(uart) & 0xFFDF)|(UWORD16)parity; //配置奇偶校驗方式
UARTx_CR(uart) = (UARTx_CR(uart) & 0xFFE7)|(UWORD16)stop_bits;//配置停止位的個數
}
/*********************************************************************************************************
;** 函數名稱: 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)
{
if(new_status == ENABLE)
UARTx_IER(uart) |= uart_flag;
else
UARTx_IER(uart) &= ~uart_flag;
}
/*********************************************************************************************************
;** 函數名稱: 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)
{
if(new_status == ENABLE)
UARTx_CR(uart) |= 0x0400;
else
UARTx_CR(uart) &= ~0x0400;
}
/*********************************************************************************************************
;** 函數名稱: 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)
{
if(FIFO ==UART_RXFIFO)
UARTx_RxRSTR(uart) = 0xFFFF;
else
UARTx_TxRSTR(uart) = 0xFFFF;
}
/*********************************************************************************************************
;** 函數名稱: 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)
{
if(new_status == ENABLE)
UARTx_CR(uart) |= 0x0080;
else
UARTx_CR(uart) &= ~0x0080;
}
/*********************************************************************************************************
;** 函數名稱: 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)
{
if (new_status == ENABLE)
UARTx_CR(uart) |= 0x0040;
else
UARTx_CR(uart) &=~ 0x0040;
}
/*********************************************************************************************************
;** 函數名稱: UART_RXConfig
;** 功能描述: SmartCard模式選擇
;**
;** 參 數: uart:UART0 UART1 UART2 UART3
;** new_status: SmartCard mode ENABLE 或 DISABLE
;**
;** 返 回 值: 無
;**
;** 作 者: 羅輝聯
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_RXConfig(UART_CHANNELS_T uart, CONFIG_STATUS_T new_status)
{
if(new_status == ENABLE)
UARTx_CR(uart) |= 0x0100;
else
UARTx_CR(uart) &= ~0x0100;
}
/*********************************************************************************************************
;** 函數名稱: UART_TimeOutConfig
;** 功能描述: 超時設置
;**
;** 參 數: uart:UART0 UART1 UART2 UART3
;** timeout: 所設超時值
;**
;** 返 回 值: 無
;**
;** 作 者: 羅輝聯
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_TimeOutConfig(UART_CHANNELS_T uart, UWORD16 timeout)
{
UARTx_TOR(uart) = timeout;
}
/*********************************************************************************************************
;** 函數名稱: UART_GuardTimeConfig
;** 功能描述: GuardTime設置
;**
;** 參 數: uart:UART0 UART1 UART2 UART3
;** guard_time:
;**
;** 返 回 值: 無
;**
;** 作 者: 羅輝聯
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void UART_GuardTimeConfig(UART_CHANNELS_T uart, UWORD16 guard_time)
{
UARTx_GTR(uart) = guard_time;
}
/*********************************************************************************************************
;** 函數名稱: UART_ByteSend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -