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

📄 uart_api.c

📁 arm(str710)usb功能的实现
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                                      
**                                          STR710 development team
**                                          
**
**                                 
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: uart_app.c
** 创 建 人: lhl
** 创建日期: 2006年7月23日
** 描    述: 串口应用程序函数定义,变量声明等
**
**--------------历史版本--------------------------------------------------------------------------------
** 修 改 人: lhl 	
** 版    本: V1.0
** 日   期: 2006年7月23日
** 描   述: 原始版本
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#include "config.h"

/******************************************* 局部宏定义 ************************************************/
#define UART_GPIO					GPIO0
#define UART_RX_PIN 				(UART3_RX_PIN)  
#define UART_TX_PIN 				(UART3_TX_PIN)   
#define	UART_NUMBER					UART3	
#define	UART_IRQ_NUMBER				UART3_IRQ
	
typedef char * uart_va_list; 
#define uart_sizeof_int(n)   		((sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1))
#define uart_va_start(ap,v)  		(ap = (uart_va_list)&v +uart_sizeof_int(v)) 
#define uart_va_arg(ap,t)    		(*(t *)((ap += uart_sizeof_int(t)) - uart_sizeof_int(t))) 
#define uart_va_end(ap)      		(ap = (uart_va_list)0) 
#define UART_SEND_BYTE(ch)			UART_ByteSend(UART_NUMBER, (UWORD8 *)(ch))


/**************************************** 局部函数原型声明 *********************************************/

/*********************************************************************************************************
;** 函数名称: uart3_init
;** 功能描述: 串口应用初始化函数:串口管脚分配,串口属性配置,串口打开关闭配置
;**           串口中断配置,接收缓冲区初始化,该函数被主程序在初始化时调用
;** 
;** 参    数: 无
;**  
;** 返 回 值: 无
;**         
;** 作   者: lhl
;** 日   期: 2006年5月22日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: lhl
;** 日   期: 2006年6月10日
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void uart3_init(UWORD32 bps) 
{
	
	GPIO_ModeConfig(UART_GPIO, UART_TX_PIN, GPIO_AF_PP);	//选择GPIO PIN 作为串口管脚使用
	GPIO_ModeConfig(UART_GPIO, UART_RX_PIN, GPIO_IN_COMS);

	
	UART_ONOFFConfig(UART_NUMBER, ENABLE);					//打开 UART
	UART_FIFOConfig(UART_NUMBER, DISABLE);					//禁止 FIFOs
	UART_FIFOReset(UART_NUMBER, UART_RXFIFO);				//复位 UART_RxFIFO
	UART_FIFOReset(UART_NUMBER, UART_TXFIFO);				//复位 UART_TxFIFO
	UART_LoopbackConfig(UART_NUMBER, DISABLE);				//禁止 Loop Back
																					//串口属性:No parity
	UART_AttributeConfig(UART_NUMBER, bps, UART_NO_PARITY, UART_1_0_STOPBITS, UARTM_8D);
																					//-Baudrate=57600Bps
																					//-1 stop bit 
																					//-8 data bits
	UART_RXConfig(UART_NUMBER, ENABLE);        					//允许RX
																//允许TxEmptyIE,RxBufNotEmptyIE中断
	UART_ITConfig(UART_NUMBER,/*UART_RXHALFFULL*/UART_RXBUFFULL,ENABLE);
	
	//IRQ_PriorityConfig(UART_IRQ_NUMBER,5);						//设置UART0中断优先级
	
	//IRQ_ONEITConfig(UART_IRQ_NUMBER,ENABLE);          			//允许UART0全局中断
	   		
}
/*********************************************************************************************************
;** 函数名称: uart3_ISR
;** 功能描述: 串口3中断服务处理程序
;** 
;** 参    数: 无
;**  
;** 返 回 值: 无
;**         
;** 作   者: lhl
;** 日   期: 2006年5月12日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void uart3_ISR(void)
{
	UWORD8     receive_data;
	
	if((UART3_SR & (UART_RXBUFFULL)))
	{
		receive_data = UART3_RxBUFR;
		
		//if(0xBB == receive_data)
			             /* 通知接收任务,收到一帧完整的数据 */	
	}
	
	UART3_RxRSTR = 0xFFFF;	//复位发送FIFO
	
}

/*********************************************************************************************************
;** 函数名称: uart_printf
;** 功能描述: 以查询的方式向串口发送字符串
;** 
;** 参    数: 	format: 将要发送的字符串
;**  
;** 返 回 值: 无
;**         
;** 作   者: 李海军
;** 日   期: 2006年5月21日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void uart_printf(char * format, ...)
{
	/*char *			s = 0;
	int 				d = 0, i = 0;	
	unsigned char		ch[sizeof(int) * 2 + 2] = {0};
	uart_va_list 		ap = 0;
	
	uart_va_start(ap, format);
	///return;
	while (* format) 
	{
		if (* format != '%') 
		{
			UART_SEND_BYTE(format++);
			continue;
		}
		switch (*(++format)) 
		{
			case 's':
			case 'S':				
				s = uart_va_arg(ap, char *);
				for ( ; *s; s++) 
				{
					UART_SEND_BYTE(s);
				}
				break;
			case 'c':
			case 'C':				
				UART_SEND_BYTE(uart_va_arg(ap, char));
				break;	
			case 'd':
			case 'D':				
				d = uart_va_arg(ap, int);
				for(i = 0; i < sizeof(int) * 2; i++)
				{
					ch[i] = (unsigned char)(d&0x0f) + '0';
					if(ch[i] > '9')
						ch[i] += 7; 
					d >>= 4;		
				}

				ch[i++] 	= 'x';
				ch[i]		= '0';

				for(i = sizeof(int) * 2 + 2; i > 0; i--)
					UART_SEND_BYTE(&ch[i -1]);
				break;
			default:
				UART_SEND_BYTE(format);
				break;
		}
		format++;
	}
	ch[0] = '\n';
	UART_SEND_BYTE(&ch[0]);
	uart_va_end(ap);*/
}

/********************************************* end of file ********************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -