⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 这是一个ucos下看门狗的驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************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 + -