总是返回电脑发送给单片机的数据

[复制链接]
2461|34
 楼主| dengdc 发表于 2017-10-21 13:56 | 显示全部楼层 |阅读模式
用MSP430FG437做了一个RS232串口通信电路,用官方例程测试,能够收到电脑发给单片机的数据。然后稍微修改了一下程序(如下红色部分),想让单片机通过接收中断返回一个固定的值,发现无论data如何变化,总是返回电脑发送给单片机的数据。
 楼主| dengdc 发表于 2017-10-21 13:58 | 显示全部楼层

#include  <msp430FG437.h>
unsigned char data = 'a';
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  FLL_CTL0 |= XCAP18PF;                     // Configure load caps
  P2SEL |= 0x30;                            // P2.4,5 = USART0 TXD/RXD
  ME1 |= UTXE0 + URXE0;                     // Enable USART0 TXD/RXD
  UCTL0 |= CHAR;                            // 8-bit character
  UTCTL0 |= SSEL1;                          // UCLK = SMCLK
  UBR00 = 0x6D;                             // 1MHz 9600
  UBR10 = 0x00;                             //
  UMCTL0 = 0x03;                            // Modulation
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
  IE1 |= URXIE0;                            // Enable USART0 RX interrupt
  P2DIR |= 0x10;                            // P2.4 output direction
  _EINT();
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}

#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{
  while (!(IFG1 & UTXIFG0));                // USART0 TX buffer ready?
  //TXBUF0 = RXBUF0;                          // RXBUF0 to TXBUF0
  TXBUF0 = data;
}
heweibig 发表于 2017-10-21 13:59 | 显示全部楼层
然后呢
 楼主| dengdc 发表于 2017-10-21 14:02 | 显示全部楼层
接着我将单片机发送数据的指令TXBUF=data取消了,结果还是会返回发给单片机的数据。
wuhany 发表于 2017-10-21 14:03 | 显示全部楼层
用万用电表测了吗
 楼主| dengdc 发表于 2017-10-21 14:05 | 显示全部楼层

嗯,发送跟接收管脚之间没有短路。请问这是什么问题
qiufengsd 发表于 2017-10-21 21:40 | 显示全部楼层
是不是你的串口中断的问题
wengh2016 发表于 2017-10-21 21:40 | 显示全部楼层
dengdc 发表于 2017-10-21 13:58
#include  
unsigned char data = 'a';
void main(void)

TXBUF0 = data; 这个又不是返回了吗
sdCAD 发表于 2017-10-21 21:41 | 显示全部楼层
没有判断data数据是什么吧。
qiufengsd 发表于 2017-10-21 21:42 | 显示全部楼层
屏蔽掉中断。
wengh2016 发表于 2017-10-21 21:42 | 显示全部楼层
dengdc 发表于 2017-10-21 13:58
#include  
unsigned char data = 'a';
void main(void)

去掉这个发送的代码。
sdCAD 发表于 2017-10-21 21:42 | 显示全部楼层
dengdc 发表于 2017-10-21 13:58
#include  
unsigned char data = 'a';
void main(void)

#pragma vector=USART0RX_VECTOR
__interrupt void usart0_rx (void)
{
  while (!(IFG1 & UTXIFG0));                // USART0 TX buffer ready?
  //TXBUF0 = RXBUF0;                          // RXBUF0 to TXBUF0

}
kkzz 发表于 2017-10-22 21:53 | 显示全部楼层
这个程序都肯定执行了。
hudi008 发表于 2017-10-22 21:53 | 显示全部楼层
dengdc 发表于 2017-10-21 13:58
#include  
unsigned char data = 'a';
void main(void)

TXBUF0 = data; 这个有发送了。
lzmm 发表于 2017-10-22 21:54 | 显示全部楼层
dengdc 发表于 2017-10-21 13:58
#include  
unsigned char data = 'a';
void main(void)

在哪里定义的data数据?
kkzz 发表于 2017-10-22 21:59 | 显示全部楼层
去掉返回函数,
hudi008 发表于 2017-10-22 21:59 | 显示全部楼层
dengdc 发表于 2017-10-21 13:58
#include  
unsigned char data = 'a';
void main(void)

这个判断数据了吗?
lzmm 发表于 2017-10-22 21:59 | 显示全部楼层
dengdc 发表于 2017-10-21 13:58
#include  
unsigned char data = 'a';
void main(void)

是每次都是返回的‘a’吗?
51xlf 发表于 2017-10-23 21:47 | 显示全部楼层
你怎么定义的数据的?
i1mcu 发表于 2017-10-23 21:47 | 显示全部楼层
dengdc 发表于 2017-10-21 13:58
#include  
unsigned char data = 'a';
void main(void)

TXBUF0 =‘a’;这样行不行?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

892

主题

13885

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部