3245|4

447

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

单片机不能接收到PC发过来的数据 [复制链接]

#include "msp430x54x.h"

void main(void)
{ WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P5SEL |=BIT6+BIT7;                        //USCI_A1 TXD/RXD
  P5DIR |=BIT5+BIT6;
  P5OUT &=~BIT5;
 
  UCA1CTL1 |= UCSWRST;                      // **Put state machine in reset**
  UCA1CTL1 |= UCSSEL_1;                     // CLK = ACLK
  UCA1BR0 = 0x03;                           // 32kHz/9600=3.41 (see User's Guide)
  UCA1BR1 = 0x00;                           //
  UCA1MCTL = UCBRS_3+UCBRF_0;               // Modulation UCBRSx=3, UCBRFx=0
  UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UCA1IE |= UCRXIE+UCTXIE;                         // Enable USCI_A0 RX interrupt

  __bis_SR_register(LPM3_bits + GIE);       // Enter LPM3, interrupts enabled
  __no_operation();                         // For debugger
}

// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
  switch(__even_in_range(UCA1IV,4))
  {
  case 0:break;                             // Vector 0 - no interrupt
  case 2:                                   // Vector 2 - RXIFG
    while (!(UCA1IFG&UCTXIFG));             // USCI_A1 TX buffer ready?
    UCA1TXBUF = UCA1RXBUF;                  // TX -> RXed character
    P5OUT |=BIT5;
    while (!(UCA1IFG&UCTXIFG));
    P5OUT &=~BIT5;
    break;
  case 4:break;                             // Vector 4 - TXIFG
  default: break; 
  }
}
这是用TI的一个例程改的程序,只是将232改为485而已,但MCU总是停在低功耗状态无法进入中断或者停在红色语句处,一步一步调试时只能进行一次中断,但串口助手无数据显示,已经检查过引脚,没有问题的,不知道哪里出错了,请高手指教

最新回复

但MCU总是停在低功耗状态无法进入中断或者停在红色语句处 这句话有矛盾啊,如果停留在红色语句处说明退出低功耗模式进入中断响应了。建议检查你外部电路,另外是不是存在电平的问题,430是3.3V的,PC端是5V的  详情 回复 发表于 2012-3-8 21:56
 
点赞 关注

回复
举报

569

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
首先建议楼主先确认一下:
单片机能够发送数据吗?PC机能够接收到吗?如果能够那么说明硬件没有问题。
如果不能,那么是没有数据发送出来,还是有数据发送出来PC没有接收到呢?

建议楼主先用示波器确认一下数据的时序信号。
 
 

回复

400

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
程序上没看出什么问题,建议检查下硬件吧
 
 
 

回复

188

帖子

0

TA的资源

纯净的硅(中级)

4
 

回复 楼主 zzbaizhi 的帖子

但MCU总是停在低功耗状态无法进入中断或者停在红色语句处
这句话有矛盾啊,如果停留在红色语句处说明退出低功耗模式进入中断响应了。建议检查你外部电路,另外是不是存在电平的问题,430是3.3V的,PC端是5V的
 
 
 

回复

447

帖子

0

TA的资源

纯净的硅(中级)

5
 

回复 4楼 peter_zheng 的帖子

有的时候会停留在低功耗状态,有的时候又停在红色语句处,我专门写了一个MCU给PC发送数据的程序,试了一下,没问题。又写了一个PC给MCU发送数据的程序,但这次不行,也就是说MCU能发不能收

 PS:PC给MCU发送数据

      基本设置同上面

       while(1)

      { r[n]=UCA1RXBUF;

        n++;

        if(n>=100)

        {n=0;}

       }

      接收区显示乱码,而且接收的数量要比发送的数量多很多,这是怎么回事呀?

      换成

      while(1)

     {while (!(UCA1IFG&UCTXIFG));             // USCI_A1 TX buffer ready?
     UCA1TXBUF = UCA1RXBUF;                  // TX -> RXed character
     P5OUT |=BIT5;
     while (!(UCA1IFG&UCTXIFG));
     P5OUT &=~BIT5;
    }

    接收区无显示,接收数量远远超过发送数量,而且停止发送和断开程序后,接收数量仍在增加

[ 本帖最后由 zzbaizhi 于 2012-3-9 09:03 编辑 ]
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表