TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430F169串口调试问题(续)

继续之前的串口调试,使用如下代码:

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阻塞吗?

Shi JianHua:

增加些延时试试。

yffy:

轮询方式没有问题,看看波特率是不是一致。

Sheldon Song:

回复 Shi JianHua:

@Shi JianHua

增加了延迟也不行

Sheldon Song:

回复 yffy:

@yffy

不知道您说得波特率一致指得是什么?

yffy:

串口接收端和你的单片机发送端的波特率,之前碰到过两个单片机都设置为9600但是通信有问题,有误差。

Sheldon Song:

回复 yffy:

@yffy

我现在是使用PC机和单片机通讯,而且单步执行会有正确的数据产生,应该不是波特率设置的问题。

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F169串口调试问题(续)
分享到: 更多 (0)