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数据的干扰?
此帖出自
小平头技术问答
这个是绝对不可能的!
首先,串行通讯是一个字节一个字节的通讯,只有接收到一个完整的字节之后才会进入中断服务程序,MSP430不支持中断嵌套,所以在中断服务里不会进入AD中断。
其次,在字节与字节之间,可能进入AD中断,因为在这个时候尚未收到完整的字节,串行通讯可能仍在运行中。同样的,中断服务运行起来之后串行中断就无法运行了。如果AD中断时间过长,可能影响到串行数据的接收。
一周热门 更多>