为什么清除了中断标志还是会不停进入中断?

2019-03-24 11:51发布

写了一个lm3s811 的uart1的接收中断程序
void UART1_ISR(void)
{
        unsigned char c;
        unsigned int ulStatus;
        printf("进入中断 ");
        ulStatus = UARTIntStatus(UART1_BASE, true);             //  读取当前中断状态
  UARTIntClear(UART1_BASE, ulStatus);                     //  清除中断状态
        printf("清除中断状态 ");
        c = UARTCharGet(UART1_BASE);
        UARTCharPut(UART1_BASE,c);
        printf("退出中断 ");
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
lcofjp
2019-03-25 00:38
我没用过TI的ARM,但是根据你的情况我推断,1. 产生两次中断是因为你开启了两个中断。接收一次,超时一次。
2. 发送多个才产生一个中断。(1)是不是单片机存在FIFO,接收后存在里面而你没全读出来。(2)你中断函数的写法很不可取,在里面发送数据会导致执行时间巨长,导致中断不能及时响应,数据基本都被覆盖了。所以你可以试着发“abcdefg“看看你接收到的是哪个字符,更容易确定问题的原因。

一周热门 更多>

相关问题

    相关文章