/****************************************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日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;***********************************************************************************