当前位置: 代码迷 >> 单片机 >> keil下通过uart中断接收串口数据,解决方案
  详细解决方案

keil下通过uart中断接收串口数据,解决方案

热度:226   发布时间:2016-04-28 16:29:14.0
keil下通过uart中断接收串口数据,急急急。。。
 
  keil下通过uart中断接收串口数据,急急急。。。
  程序运行的时候,通过串口调试助手往串口发数据,下位机程序没有触发串口中断,应该怎么写哦,高手指点一下,最好有个实例。。。
  下面是我定义的uart0中断处理程序
 
C/C++ code
/***************************************************************************** 名称:IRQ_UART0()* 功能:串口UART0接收中断。* 入口参数:无* 出口参数:无****************************************************************************/void  IRQ_UART0(void) __irq{      uint8  i;      switch(U0IIR&0x0F)   {           case 0x04:           {//            for(i=0;i<8;i++)            while((U0LSR&0x01) == 1)               {                   insertQue(&buffer,U0RBR);  //将接收的数据存储在队列中               }           }           break;           case 0x0c:           {               while((U0LSR&0x01) == 1)               {                   insertQue(&buffer,U0RBR);               }           }           break;           default:           break;   }   VICVectAddr = 0x00;                  // 中断处理结束}        



------解决方案--------------------
你这个应该是MDK的吧?没有进入串口中断,确定两个问题,一是软件:开中断了没有?中断向量设置对了没?是否有更高优先级的中断,经常性中断。二是硬件,232工作正常不?串口连接正常不?

其实没进入中断函数,那么你的中断函数里面实现什么,就都不用看了,进入了中断再说,呵呵
------解决方案--------------------
这就看你是什么ARM了。像我现在用的cortexm3的话

startup.s 是用来设置中断向量表及其中断服务函数地址的。

中断向量地址和中断函数地址相关联了之后,再开串口中断,应该就能进入了,呵呵,具体的代码里面,我就帮不上忙了,呵呵!

------解决方案--------------------
中断中尽量不要用到WHILE
  相关解决方案