接收中断写与不写“while (!(IFG1 & URXIFG0));”有什么区别?

2019-03-24 10:55发布

1.这两段程序有什么区别?
#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{     
  while (!(IFG1 & URXIFG0));
  IFG1 &=~URXIFG0;   
RxBuf[RxPoint++]=RXBUF0;  
}
#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{     
RxBuf[RxPoint++]=RXBUF0;  
}

2.我在接收数据的时候,可能液晶或者AD在同时工作,如果他们也用到了接收中断,那么会不会我接收到的数据是经过了液晶和AD数据的干扰?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
面纱如雾
1楼-- · 2019-03-25 10:19
 精彩回答 2  元偷偷看……
qiushenghua
2楼-- · 2019-03-25 15:02
面纱如雾 发表于 2014-9-6 22:08
我的书上说采用矢量中断,支持多个多个中断源,可以任意嵌套。。。。。。。。。。。。

我或许说得不是那么妥当,见下面的链接
http://www.21ic.com/jichuzhishi/datasheet/MSP430/data/190891.html

你应该没有这么用吧。。。在中断服务里再打开总中断开关,目的仅仅是实现可能来的中断嵌套。。。
其实完全可以等待中断服务结束后再响应在这其中到来的中断
王项电子
3楼-- · 2019-03-25 20:16
面纱如雾 发表于 2014-9-6 22:08
我的书上说采用矢量中断,支持多个多个中断源,可以任意嵌套。。。。。。。。。。。。

MSP430默认关闭中断嵌套,打开嵌套的方法是在中断服务函数中打开总中断。
面纱如雾
4楼-- · 2019-03-25 21:00
 精彩回答 2  元偷偷看……
zzbaizhi
5楼-- · 2019-03-25 23:29
面纱如雾 发表于 2014-9-7 14:38
是这个吗?: _EINT();

是的,这是打开总中断。进入中断程序后总中断是关闭的,你如果想在中断中接收另一个中断就需要再次打开总中断。

一周热门 更多>

相关问题

    相关文章