打印

G2553串口发送数据问题

[复制链接]
2977|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FireRiver9|  楼主 | 2017-9-30 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目标:用单片机填充以上数据并从串口发出,从串口调试助手观察结果
目前代码:
#include <msp430.h>
#include<stdio.h>

void USCI_A0_init(void)
{

      DCOCTL = 0; // Select lowest DCOx and MODx settings

      BCSCTL1 = CALBC1_1MHZ; // Set DCO

      DCOCTL = CALDCO_1MHZ;

      P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD

      P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD

      UCA0CTL1 |= UCSSEL_2; // SMCLK

      UCA0BR0 = 104; // 1MHz 9600

      UCA0BR1 = 0; // 1MHz 9600

      UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1

      UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**

      IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt

      __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled
}


int main(void)

{

  WDTCTL = WDTPW + WDTHOLD; // Stop WDT

  USCI_A0_init();
  unsigned char sbuf[8];        /*待发送的内容*/
  unsigned int vol,curr,index=0;
  while(1)
  {
      sbuf[0] = (unsigned char)0x55;    //头部,固定
      sbuf[1] = (unsigned char)((0x80)|(index & (0x3F<<16)));    //前两个bit为类型,此处以10B电压源数据为例,后6bit为index前6位
      sbuf[2] = (unsigned char)(index & (0xFF<<8));    //去除头6bit后的一个字节
      sbuf[3] = (unsigned char)(index & 0xFF);    //取index最后一个字节

      vol = (unsigned int)(20);    //电压,先按固定值20取
      curr = (unsigned int)(30);  //电流,先按固定值30取
      sbuf[4] = (unsigned char)(vol & (0xFF<<4));//电压数据前八bit放入第一个Byte
      sbuf[5] = (unsigned char)(((vol&0xF)<<4)|(curr & (0xF<<8)));//电压数据的后四位和电流数据的前4位
      sbuf[6] = (unsigned char)(curr & 0xFF);//电流数据的后8位
      sbuf[7] = (unsigned char)0xAA;        //尾部

      unsigned int i;
      for(i=0;i<8;i++)
          UartSend(sbuf);
  }
}

#pragma vector=USCIAB0RX_VECTOR

void UartSend(unsigned char c)//发送字节函数
{
while(!(IFG2 & UCA0TXIFG));  //待发送为空
UCA0TXBUF=c;
IFG2 &=~UCA0RXIFG;
}

目前问题:连接串口,串口调试助手里显示的“RX”没有变化;若成功的发送的话不是应该在串口调试助手里看到“RX”增加吗?
求大神指教

相关帖子

沙发
qinlicn| | 2017-9-30 16:34 | 只看该作者
还没进main,就已经在USCI_A0_init()中睡着了 __bis_SR_register(LPM0_bits + GIE),又没人叫醒它...__bic_SR_register
你的目标:用单片机填充以上数据并从串口发出,从串口调试助手观察结果
可你的代码不是这样的。
另外,这段代码编译能过?

使用特权

评论回复
板凳
Mattheww| | 2017-9-30 16:34 | 只看该作者
用示波器 测量引脚的波形

使用特权

评论回复
地板
Erichk| | 2017-9-30 16:52 | 只看该作者
看看是否有数据,有的话,看串口助手的配置,没有的话,分析程序

使用特权

评论回复
5
迪卡| | 2017-9-30 17:01 | 只看该作者

换成二进制的,看看能不能得到数据

使用特权

评论回复
6
冰河w| | 2017-9-30 17:11 | 只看该作者
发送函数和中断服务函数弄混淆了。

使用特权

评论回复
7
Thorald| | 2017-9-30 17:20 | 只看该作者
初始化函数最后一句是进入低功耗模式,那么等到串口收到数据再继续运行?

使用特权

评论回复
8
Bjorn| | 2017-9-30 17:44 | 只看该作者
中断服务和发送函数是同一个,这个函数缺少参数,执行不出错已经是万幸了。

使用特权

评论回复
9
Rollo| | 2017-9-30 17:49 | 只看该作者
先下载仿真例程,手动单步跟踪,看看人家是怎么顺序执行的

使用特权

评论回复
10
vivilzb1985| | 2017-9-30 22:46 | 只看该作者
这个代码上没啥问题的呀

使用特权

评论回复
11
kkzz| | 2017-10-1 22:14 | 只看该作者
这个串口怎么唤醒的?

使用特权

评论回复
12
hudi008| | 2017-10-1 22:14 | 只看该作者
代码都没有全。

使用特权

评论回复
13
lzmm| | 2017-10-1 22:14 | 只看该作者
这个是抄写的别人的代码吗?

使用特权

评论回复
14
minzisc| | 2017-10-1 22:15 | 只看该作者
这个中断配置的不正确吗?

使用特权

评论回复
15
selongli| | 2017-10-1 22:16 | 只看该作者
串口的硬件搭建需要共地。

使用特权

评论回复
16
fentianyou| | 2017-10-1 22:16 | 只看该作者
使用示波器测量信号的电平电压。

使用特权

评论回复
17
xiaoyaodz| | 2017-10-1 22:16 | 只看该作者
IO的信号是否有变化?

使用特权

评论回复
18
febgxu| | 2017-10-1 22:17 | 只看该作者
不能显示数据吗?

使用特权

评论回复
19
sdlls| | 2017-10-1 22:17 | 只看该作者
这个G2的单片机串口是模拟的吗?

使用特权

评论回复
20
pixhw| | 2017-10-1 22:17 | 只看该作者
可能波特率不正确,接收不到。

使用特权

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

本版积分规则

74

主题

673

帖子

0

粉丝