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

📄 main.c

📁 实现LPC2220的UART的中断接受
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                            		沈阳昊通科技服务有限公司                                   
**                                    http://www.inhow.com
**
**-------------------------------------------文件信息---------------------------------------------------
** 文件名:		    	MAIN.C
** 最后修改日期:        2008-01-20
** 最后版本:    		1.0
** 相关描述:		    主函数程序
**
**------------------------------------------------------------------------------------------------------
** 作者:				陈伟斌
** 创建时间:			2008-01-20
** 最后版本:			1.0
** 相关描述:			试用版本
**
**------------------------------------------------------------------------------------------------------
** 修改者:
** 修改时间:
** 版本:
** 相关描述:
**
********************************************************************************************************/
#include "config.h"

//******************************************************************************************************
//函数名:DelayNS()
//功能:  延时
//参数:  dly
//返回值:none
//作者:  陈伟斌
//时间:2008/01/20
//******************************************************************************************************
void DelayNS(uint32 dly)
{
	uint32 i;
	for(;dly>0;dly--)
		for(i=0;i<5000;i++);
}

volatile uint8 chFlag=0;                //当接受到回车符时,变为1告诉主函数,发送主函数里的数据
volatile uint8 chCount=0;               //数据下标控制
uint8 pchBuf[100];                      //数据缓冲数据
/*******************************************************************************************************
* 名    称:IRQ_UART0()
* 功    能:串口UART0接收中断。
* 入口参数:无
* 出口参数:无
*********************************************************************************************************/  
void __irq IRQ_UART0(void)
{
	uint8 bak;
	if(!chFlag)
	{
		bak=U0RBR;
		pchBuf[chCount]=bak;
		chCount++;
		if(bak=='\r') 
		{
			chFlag=1;
			chCount=0;
		}			
     }
     VICVectAddr = 0x00;              		// 中断处理结束
}

/*******************************************************************************************************
* 名    称:ClearBuf()
* 功    能:将缓冲器里的数据清零。
* 入口参数:字符串首地址
* 出口参数:无
*********************************************************************************************************/
void ClearBuf(uint8 *Str)
{
	uint8 i;
	for(i=0;i<100;i++)
		*(Str+i)=0;
}

//******************************************************************************************************
//主函数main()
//功能描述:
//作者:
//时间:
//******************************************************************************************************
int  main(void)
{   
    UARTMODE  uart0_set;       
    PINSEL0 = 0x00000005;                	// 设置I/O连接到UART0
   
    uart0_set.datab = 8;                 	// 8位数据位
    uart0_set.stopb = 1;                 	// 1位停止位
    uart0_set.parity = 0;                	// 无奇偶校验
    
    Uart_Init(115200, uart0_set);        	// 初始化串口模式
   
    U0FCR = 0x01;                        	// 使能FIFO,并设置触发点为8字节
    U0IER = 0x01;                        	// 允许RBR中断,即接收中断
   
    /* 设置中断允许 */
    VICIntSelect = 0x00000000;           	// 设置所有通道为IRQ中断
    VICVectCntl0 = 0x20|0x06;        		// UART0中断通道分配到IRQ slot 0,即优先级最高
    VICVectAddr0 = (int)IRQ_UART0;       	// 设置UART0向量地址
    VICIntEnable = 0x00000040;           	// 使能UART0中断
    
    Uart_SendStr((uint8*)"test 0k1");
    while(1)             					// 等待中断
    {         
        if(chFlag)  					    // 是否已经接收到\r
        {  
        	Uart_SendStr((uint8*)"test 0k3");
        	Uart_SendStr(pchBuf);
        	ClearBuf(pchBuf);
        	chFlag=0;        
        }
    }
    return(0);
}
/*********************************************************************************************************
**                                           文件结束
*********************************************************************************************************/

⌨️ 快捷键说明

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