您好,
我不熟悉TI的控制器,因此这可能是一个非常基本的问题。
我设置了UCA0并启用了UCTXIE和UCRXIE。
这是我的ISR:
#pragma vector=USI_A0_vector
__interrupt void USI_A0_ISR(void){
Switch(__偶 数_in_range(UCA0IV,USI_UART_UCTXCPTIFG))
{
案例USI_NONE:中断;
案例USI_UART_UCRXIFG:
RXData = UCA0RXBUF; //清除缓冲区
__BIC_SR_REGISTER_ON_EXIT (LPM0_bits);//在RETI上退出LPM0
中断;
案例USI_UART_UCTXIFG:
如果(UCA0IFG和UCTXIFG)== 0)
{//为什么我们要降落在这里?
while (1);
}
//发送下一个字节(如果有)
sys_if_Cmd_sendByteFromRingBuf();
中断;
案例USI_UART_UCSTIFG:中断;
案例USI_UART_UCTXCPTIFG:中断;
}
}
一旦ISR被调用,我最终以USSCI_UART_UCTXIFG作为案例,我就会认为UCTXIFG始终是设置的。 但是没有,我的控制器在我为验证此行为而输入的while (1)循环时卡住。 为什么会这样?
Jens