社区导航

 

搜索
查看: 1291|回复: 1

[求助] uart通讯问题求助

[复制链接]

2

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-8-12 10:05 | 显示全部楼层 |阅读模式
用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;
}


回复

使用道具 举报

4193

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2015-8-12 11:13 | 显示全部楼层
没有看到你有使能uart的语句哦,只看到你设置校验,uart时钟,波特率等。
如果是初学的话,建议对语句多加注释。这样你看的明白,别人也看得懂。
if可以的话,去TI的官网上下载例程参考下。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-2 16:32 , Processed in 0.129063 second(s), 22 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表