[讨论] 请大家帮我看看我的串口程序哪里有问题。

sharizh   2015-5-5 10:31 楼主
我自己买来MSP430F6736做了一块板子,想向PC发送一段字符串在串口助手里面显示出来,可是毫无反应。请大家帮我看看我的程序哪里有问题,谢谢了~
#include
#include
unsigned char buffer[]={"I'm MSP430!\n"};
void delay(unsigned int n)
{      
  unsigned int i,j;
  for(i=0;i    for(j=0;j<1000;j++);
}
void main(void)
{
    unsigned int i;
    WDTCTL = WDTPW+WDTHOLD;               // 关闭看门狗
    // 将P1.2 P1.3设置为串口功能
    P1SEL |= BIT2 | BIT3;                  
    P1DIR |= BIT2 | BIT3;                  
    // 设置异步通信
    UCA0CTL0=0x11;                           // 将UCSWRST位设置为1
    UCA0CTL0=0x91;                           // 选择时钟CLK = SMCLK,系统时钟1048576Hz
    UCA0BR0=9;                                  // 设置波特率为115200
    UCA0BR1=0;                        
    UCA0MCTL=0x01;                              // 设置调整参数
    UCA0CTLW0 &= ~UCSWRST;                // 复位UCSWRST
    UCA0IE |= UCTXIE;
    while(1)
    {
      while (!(UCA0IFG & UCTXIFG));           // USCI_A0 TX buffer ready?
      for(i=0;i       {
        UCA0TXBUF=buffer[i];
        delay(30);
      }
    }
}

回复评论 (4)

   while (!(UCA0IFG & UCTXIFG));     
点赞  2015-5-5 15:01
引用: zbpwrl53 发表于 2015-5-5 15:01
while (!(UCA0IFG & UCTXIFG));

请问这有问题吗?
点赞  2015-5-5 19:56
没看出啥问题,顶多是发送的逻辑有点费资源。
对于具体的这颗IC不是太熟悉,建议你跟踪调试一下,看看主循环能否正常跑起来。
在主循环内部和外部初始化阶段各打一个断点,看程序会不会自动复位。或者是主循环被卡在哪个分支语句里了?(因为你在主循环里用到了2个循环语句,如果条件一直无法达成,程序会被阻塞住无法继续向下执行)

然后再将示波器接在IO口,检查一下是否有信号输出,TX和RX线是否接反,是否波特率不正确导致串口助手无法接收数据等

如果IO口无波形,再检查串口初始化语句是否正确

故障排查就是按照这个流程来的,自己耐心查吧,别人帮不了你的。
点赞  2015-5-5 23:33
引用: qiushenghua 发表于 2015-5-5 23:33
没看出啥问题,顶多是发送的逻辑有点费资源。
对于具体的这颗IC不是太熟悉,建议你跟踪调试一下,看看主循环能否正常跑起来。
在主循环内部和外部初始化阶段各打一个断点,看程序会不会自动复位。或者是主循环被卡在哪个分支语句里了?(因为你在主循环里用到了2个循环语句,如果条件一直无法达成,程序会被阻塞住无法继续向下执行)

然后再将示波器接在IO口,检查一下是否有信号输出,TX和RX线是否接反,是否波特率不正确导致串口助手无法接收数据等

如果IO口无波形,再检查串口初始化语句是否正确

故障排查就是按照这个流程来的,自己耐心查吧,别人帮不了你的。

谢谢您给的建议 ,我先根据您给的建议检查一遍,有不懂的再请教您。
点赞  2015-5-6 10:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复