打印

串口通信问题

[复制链接]
1095|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
baidudz|  楼主 | 2012-10-20 07:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
芯片型号是MSP430 G2553
是TI launchpad

我的程序如下

#include<msp430g2553.h>
unsigned int i;

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT

UCA0CTL1|=UCSWRST;
UCA0CTL0&=~UC7BIT;//字符长度为8
UCA0CTL1|=UCSSEL_2;//选择系统时钟
UCA0BR0=0x6D; //波特率为9600
UCA0BR1=0;
UCA0MCTL=0;//UCA0MCTL=UCBRS0;
IE2 |= 0x03;//开接收使能
UCA0CTL1&=~UCSWRST;
P1SEL|=BIT1+BIT2; //将P1.1 P1.2设为第二功能
P1SEL2|=BIT1+BIT2;

_BIS_SR(GIE);

while(1)
{
UCA0TXBUF = 0x11;
i=10000;
while(i--);
}
}

#pragma vector=USCIAB0RX_VECTOR
__interrupt void usart0_rx (void)
{
while (!(IFG2 & UCA0RXIFG)); // USART0 TX buffer ready?
UCA0TXBUF = UCA0RXBUF; // RXBUF0 to TXBUF0
}


程序目的是单片机通过串口持续向PC发送数据,PC一旦给单片机发送数据则单片机立刻回发。

现在问题是单片机能够正常发送数据,上位机能正常接收。但是单片机不能接收到PC机传回的数据。
我调试时在“ IE2 |= 0x03;//开接收使能 ” 这一句设置断点,这一句运行后IE2寄存器值没有改变。不知道问题出在哪里。在调试时PC给单片机发送数据时IFG2能正常置位。就是IE2寄存器没有修改。不知道是什么情况

相关帖子

沙发
hsbjb| | 2012-10-20 08:02 | 只看该作者
while (!(IFG2 & UCA0RXIFG)); // USART0 TX buffer ready?

在这句一个断点,正常运行时,从PC向单片机发一个字节,看中断在此断点不?

如果正的能向PC发数据,又不进这个断点,那就查一下看你的硬件连接

使用特权

评论回复
板凳
无冕之王| | 2012-10-20 08:06 | 只看该作者
查一下看你的硬件连接

使用特权

评论回复
地板
dfsa| | 2012-10-20 08:19 | 只看该作者
是否能进入__interrupt void usart0_rx (void)函数

使用特权

评论回复
5
秋天落叶| | 2012-10-20 08:23 | 只看该作者
2楼正解

使用特权

评论回复
6
comeon201208| | 2012-10-22 13:33 | 只看该作者
楼主看下你的总中断的开了没,还有啊要在你的接收程序里面设置断点来测试的

使用特权

评论回复
7
wulala| | 2012-10-22 20:31 | 只看该作者
这个是需要慢慢调试的,在这里不好说

使用特权

评论回复
8
lagogo2012| | 2012-10-22 20:32 | 只看该作者
在中断里面加个断点测试下就知道了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

239

主题

2284

帖子

0

粉丝