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

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条回答
残虹退没
1楼-- · 2019-03-24 17:22
< 当配置成接收超时中断的时候 1.jpg
残虹退没
2楼-- · 2019-03-24 18:42
 精彩回答 2  元偷偷看……
残虹退没
3楼-- · 2019-03-24 19:30
如果配置成接收中断的话,发送一个字符a不能进入中断,要一次性发送好几个才行,这时候中断只进入一次
lcofjp
4楼-- · 2019-03-25 00:38
我没用过TI的ARM,但是根据你的情况我推断,1. 产生两次中断是因为你开启了两个中断。接收一次,超时一次。
2. 发送多个才产生一个中断。(1)是不是单片机存在FIFO,接收后存在里面而你没全读出来。(2)你中断函数的写法很不可取,在里面发送数据会导致执行时间巨长,导致中断不能及时响应,数据基本都被覆盖了。所以你可以试着发“abcdefg“看看你接收到的是哪个字符,更容易确定问题的原因。
残虹退没
5楼-- · 2019-03-25 02:25
 精彩回答 2  元偷偷看……
lcofjp
6楼-- · 2019-03-25 03:51
残虹退没 发表于 2014-3-1 10:01
没有开两个中断,我一开始不熟悉两个接收中断应该用那个,所以两个都单独试了一下。lm3s811有fifo,下午 ...

具体的问题就需要你自己试验了,还有要仔细看他的用户手册,这个才是最权威的。这款芯片我没用过,所以提供不了具体的帮助信息。

一周热门 更多>

相关问题

    相关文章