打印
[MCU]

串口调试

[复制链接]
451|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liliang9554|  楼主 | 2019-6-16 14:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dengdc| | 2019-6-16 14:33 | 只看该作者
你自己没试试?

使用特权

评论回复
板凳
liliang9554|  楼主 | 2019-6-16 14:36 | 只看该作者
我写了很多程序都没有办法实现

使用特权

评论回复
地板
huangchui| | 2019-6-16 14:39 | 只看该作者
不知道G2553单片机,不过你可以先确定下是硬件原因还是软件原因

使用特权

评论回复
5
heweibig| | 2019-6-16 14:47 | 只看该作者
用示波器量电脑的发送,如果有波形量单片机接受引脚,如果有波形量发送引脚,如果有波形则量电脑接收

使用特权

评论回复
6
zhanghqi| | 2019-6-16 14:50 | 只看该作者
如果到单片机接收没波形则可能是硬件原因;如果发送开始无波形则可能是软件原因

使用特权

评论回复
7
lizye| | 2019-6-16 14:53 | 只看该作者
是的,程序 估计你得自己想办法了!!!

使用特权

评论回复
8
liliang9554|  楼主 | 2019-6-16 14:57 | 只看该作者
我现在编写的程序可以实现单片机给PC发送数据的功能,就是把想要显示的数据写在程序里面,然后下载运行,在串口调试助手里面就可以在数据接收区显示了,但是就是不能实现在数据发送区里面手动输入,然后再数据接收区里显示

使用特权

评论回复
9
wyjie| | 2019-6-22 14:26 | 只看该作者

看看程序

使用特权

评论回复
10
liliang9554|  楼主 | 2019-6-22 14:30 | 只看该作者

//通行格式:N.8.1,2400

#include<msp430g2553.h>
typedef unsigned char uchar;
typedef unsigned int uint;

void Delays(void);
void PutString(uchar *ptr);
void initUART(void);

void main(void)

{
  uchar *tishi ="MCU sends 0~127 to PC and the\
                 \n screen will display their corresponding\
                  \n ASCII code as follows:";

       uchar value =0;
       WDTCTL = WDTPW + WDTHOLD;
       initUART();
       _EINT();
       PutString(tishi);

while(1)  //MCU向PC发信息
   {
    while(!(IFG2&UCA0TXIFG));   //TX 缓存空闲?
    UCA0TXBUF = value;    // 发送数据
    value&=0x7f;    //使value的值不要超过128
    IFG2&=~UCA0TXIFG;  //标志寄存器清零
    while(!(IFG2&UCA0TXIFG));  
    UCA0TXBUF ='\n';    //换行
   Delays();
   }
}

void initUART(void)     //各种初始化

{
  BCSCTL1 = CALBC1_1MHZ;     
  DCOCTL  = CALDCO_1MHZ;  //时钟的设置  (可以不用设置,要设置不能设置的太大)
   P1SEL |=0x06;  // P1.1,2选择为UART收发端口
   P1SEL2 |=0x06;   //将P1.1 P1.2设为第二功能  
  UCA0BR0 = 0x6D;   //波特率9600      
  UCA0BR1 = 0x00;
UCA0MCTL =0;     //  选择模式      
UCA0CTL1|=UCSSEL_2+UCSWRST; //SMCLK时钟
IE2|= UCA0RXIE+UCA0TXIE;     // 使能接收中断  在这里可以不用
  UCA0CTL1&= ~UCSWRST;         // 初始化
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void get()
{
    uchar value;
    value=UCA0RXBUF;
    IFG2&=~UCA0RXIFG;
}

void PutString(uchar *ptr)
{
   while(*ptr!='\0')
    {
     while(!(IFG2&UCA0TXIFG));  //TX 缓存空闲?
      UCA0TXBUF = *ptr++;       // 发送数据
    IFG2&=~UCA0TXIFG;  //标志寄存器清零
    }
    while(!(IFG2&UCA0TXIFG));
   UCA0TXBUF = '\n';

}


void Delays(void)    //延时函数
{
uint i;
for(i=60000;i>0;i--);
}

使用特权

评论回复
11
dengdc| | 2019-6-22 14:33 | 只看该作者
楼主给的很直观的code,我是暂时没看出多大问题的

使用特权

评论回复
12
spark周| | 2019-6-22 14:36 | 只看该作者
不过还是建议多检查下initUART()函数中个相关配置寄存器的使用情况的

使用特权

评论回复
13
wyjie| | 2019-6-22 14:41 | 只看该作者

发送开始无波形可能是软件原因

使用特权

评论回复
14
zhaoxqi| | 2019-6-22 15:00 | 只看该作者

这个需要上位机有key的功能。

使用特权

评论回复
15
jlyuan| | 2019-6-22 15:04 | 只看该作者

使用软件调用键盘的功能。

使用特权

评论回复
16
jlyuan| | 2019-6-22 15:08 | 只看该作者
这个是上位机的功能

使用特权

评论回复
17
wyjie| | 2019-6-22 15:11 | 只看该作者

楼主要是实现这个上位机软件还是下位机接收?

使用特权

评论回复
18
jlyuan| | 2019-6-22 15:15 | 只看该作者

这个使用键盘输入数据就行。

使用特权

评论回复
19
yszong| | 2019-6-22 15:18 | 只看该作者

软件响应key(e)这个函数。

使用特权

评论回复
20
lizye| | 2019-6-22 15:21 | 只看该作者

需要G2553读取USB的数据吗?
实现直接的串口收发加上上位机不就可以了吗?

使用特权

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

本版积分规则

950

主题

11568

帖子

6

粉丝