改进利用串口的FIFO接收数据
时间:11-20
来源:互联网
点击:
- /****************************************************************************
- #*名称:UART_Initt
- #*功能:初始化UART0中断以及中断向量表的配置
- #*入口参数:无
- #*出口参数:无
- #****************************************************************************/
- voidUART_Init(void)
- {
- uint16Fdiv;
- U0LCR=0x83;//相关校验位、数据长度等的设置,DLAB=1,可设置波特率
- Fdiv=(Fpclk/16)/BAUD;
- U0DLM=Fdiv/256;
- U0DLL=Fdiv%256;
- U0LCR=0X03;
- U0IER=0X01;//只使能接收中断
- U0FCR=0x81;//使能发送和接收的FIFO,8字节触发
- IRQEnable();//使能IRQ中断(这一步注意,下午调试了好久,唉)
- VICIntSelect=0x00000000;//设置所有通道为IRQ中断
- VICVectCntl0=0x20|6;//UART0通道分配到IRQslot0,优先级最高
- VICVectAddr0=(uint32)UART0_IRQ;//设置UART0中断程序地址
- VICIntEnable=0x40;//使能UART0中断
- }
- void__irqUART0_IRQ(void)
- {
- intcount;
- switch(U0IIR&0x0F)
- {
- case0x02://产生发送中断
- break;
- case0x04://FIFO接收数据到达8个字节
- for(count=0;count<8;count++)
- {
- Recive_Buffer[UART0Count++]=U0RBR;//保存接收到的数据
- }
- rcv_new=1;//标志接收到新的数据
- break;
- case0x0c://FIF0中至少有一个数据,而且在3.5到4.5个字符时间内无数据进(可判断数据接收完毕)
- while((U0LSR&0x01)==0x01)
- {
- Recive_Buffer[UART0Count++]=U0RBR;
- }
- rcv_new=1;//标志接收到新的数据
- break;
- default:
- break;
- }
- VICVectAddr=0x00;//结束中断
- }
串口FIFO接收数 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)