继续之前的串口调试,使用如下代码:
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3SEL |= 0xC0; // P3.6,7 = USART1 TXD/RXD
ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD
UCTL1 |= CHAR; // 8-bit character
UTCTL1 |= SSEL0; // UCLK = ACLK
UBR01 = 0x03; // 32k/9600 - 3.41
UBR11 = 0x00; //
UMCTL1 = 0x4A; // Modulation
UCTL1 &= ~SWRST; // Initialize USART state machine
// Mainloop
for (;;)
{
while (!(IFG2 & UTXIFG1)); // USART1 TX buffer ready?
TXBUF1 = 0xA5;
}
}
上述代码在CCS5.1下单步执行,可以产生正确的结果,但持续运行,则没有连续的数据产生,暂停后结果偶尔不正确,请问是什么原因呢?
是因为采用轮询的方式造成CPU阻塞吗?