uart通讯问题求助

2019-03-24 09:53发布

用430的lunchpad写了一个uart通讯小程序,功能是实现“回声”,把PC发给430的数据再返回给PC。
问题1:无论选择MSB先发送还是LSB先发送(UCA0CTL0寄存器UCMSB位),接收到的数据都没有变化,为什么?
问题2:程序中设置通讯参数为偶校验,PC端串口调试器使用偶校验发送数据时,功能正常。改为PC端使用奇校验发送数据后,没有数据返回,但状态寄存器UCA0STAT中各标志位没有变化。如果使能UCA0CTL0寄存器的UCRXEIE位,PC端能够收到数据返回,但UCA0STAT仍然没有变化。为什么?

代码如下:
#include "msp430g2553.h"

int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
//设置DCO频率
  BCSCTL1=CALBC1_1MHZ;
DCOCTL=CALDCO_1MHZ;
//使能RXD,TXD
P1SEL=BIT1+BIT2;
P1SEL2=BIT1+BIT2;

//初始化LED
P1DIR|=BIT0+BIT6;
P1OUT&=~BIT0;
//校验使能,偶校验,数据位7
UCA0CTL0|=BIT7+BIT6+BIT4;
//选择SMLK为uart时钟源
UCA0CTL1|=UCSSEL_2;
//波特率9600
UCA0BR0=104;
UCA0BR1=0;

UCA0MCTL=UCBRS0;

UCA0CTL1&=~UCSWRST;
//UCA0CTL1|=BIT5;
IE2|=UCA0RXIE;

_EINT();
LPM0;
  return 0;
}

#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  while(!(IFG2&UCA0TXIFG));
  UCA0TXBUF=UCA0RXBUF;
  P1OUT^=BIT0+BIT6;
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
huaiqiao
2019-03-24 16:55
< 没有看到你有使能uart的语句哦,只看到你设置校验,uart时钟,波特率等。
如果是初学的话,建议对语句多加注释。这样你看的明白,别人也看得懂。
if可以的话,去TI的官网上下载例程参考下。

一周热门 更多>

相关问题

    相关文章