在线情况
楼主
  • 头像
  • 级别
    • 积分4
    • 经验17
    • 文章2
    • 注册2015-04-14
    【USART】使用TI提供程序,发现串口返回数据多一个无效字节
    [P]代码如下:通过P2口的小灯发现输入数据是正确的,但是串口返回数据是错误的(有时回复2个字节)。[/P][P] [/P][P]#include<msp430x14x.h>[/P][P]
    int main(void)
    {
      WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗
      P2DIR = 0xFF;P2OUT = 0xFF;
     
      P3SEL |= 0x30;                            // 选择P3.4和P3.5做UART通信端口
      ME1 |= UTXE0 + URXE0;                     // 使能USART0的发送和接受
      UCTL0 |= CHAR + SWRST;                            // 选择8位字符
      UTCTL0 |= SSEL0;                          // UCLK = ACLK
      UBR00 = 0x03;                             // 波特率9600
      UBR10 = 0x00;                             //
      UMCTL0 = 0x4A;                            // Modulation
      UCTL0 &= ~SWRST;                          // 初始化UART状态机
      IE1 |= URXIE0;                            // 使能USART0的接收中断  
     
      while(1)
      {
        _EINT();
        LPM1;
        while(!(IFG1 & UTXIFG0));
        P2OUT = ~RXBUF0;
        TXBUF0 = RXBUF0;
      }
    }
    /***********
    *******串口中断接收服务程序
    ************/[/P][P]#pragma vector=UART0RX_VECTOR
    __interrupt void usart0_rx(void)
    {
      LPM1_EXIT;
    }
    [/P]
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
    • 门派
    • 职务总版主
    • 声望+9
    • 财富5
    • 积分3065
    • 经验390701
    • 文章6744
    • 注册2006-03-07
    你好:
    建议你使用串调试工具来做这类基础实验,对你的调试会有较好的帮助。[P]其二,建议你检查一下的硬件连接是否有问题,最好使用PC真硬件串口连接。[/P][P]由于你使用的是ACLK作为时钟源,建议你可以稍为降波特率频率来试试。比如2400、4800。[/P]
    [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
    Powered by LeadBBS 9.2 .
    Page created in 0.2266 seconds with 7 queries.