本帖最后由 yuson102 于 2015-8-13 11:59 编辑
使用芯片型号:msp430fr4133
编译器:IAR
问题描述:在主循环处进入低功耗。在通讯中断退出低功耗,使程序能够在主循环里处理接收到的数据。但是这么做会经常无法进入接收中断。比如说本来接收到的是8个byte,但是只有前面2、3个byte 能够进入中断接收到,其他的全部miss。
具体程序架构如下。如果将中断中__low_power_mode_off_on_exit();语句去掉。又可以正常进入中断接收到所有数据。
哪位大侠知道原因,谢谢!
while(1)
{
if(CommIsr == 0)
{
__bis_SR_register(LPM3_bits + GIE); //Enter LPM3 w/ interrupt
}
WDTCTL = WDTPW + WDTCNTCL + WDTSSEL0 + WDTIS0+WDTIS1 ; // Set watchdog
if(CommIsr > 0)
{
UartDataProcess();
CommIsr--;
}
}
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
RxdTemp = UCA0RXBUF;
RxdBuffer[RecCnt] = RxdTemp ;
if(CommIsr < 0xff)
{
CommIsr++;
}
__low_power_mode_off_on_exit();//接收中断退出低功耗
}
|