打印

串口调试

[复制链接]
725|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liliang9554|  楼主 | 2017-3-17 22:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dengdc| | 2017-3-17 22:56 | 只看该作者
你自己没试试?

使用特权

评论回复
板凳
liliang9554|  楼主 | 2017-3-17 22:58 | 只看该作者
我写了很多程序都没有办法实现

使用特权

评论回复
地板
huangchui| | 2017-3-17 23:02 | 只看该作者
不知道G2553单片机,不过你可以先确定下是硬件原因还是软件原因

使用特权

评论回复
5
heweibig| | 2017-3-17 23:04 | 只看该作者
用示波器量电脑的发送,如果有波形量单片机接受引脚,如果有波形量发送引脚,如果有波形则量电脑接收

使用特权

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

使用特权

评论回复
7
lizye| | 2017-3-17 23:07 | 只看该作者
是的,程序 估计你得自己想办法了!!!

使用特权

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

使用特权

评论回复
9
wyjie| | 2017-3-17 23:13 | 只看该作者
看看程序

使用特权

评论回复
10
liliang9554|  楼主 | 2017-3-17 23:16 | 只看该作者
//通行格式: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| | 2017-3-17 23:17 | 只看该作者

楼主给的很直观的code,我是暂时没看出多大问题的

使用特权

评论回复
12
spark周| | 2017-3-17 23:19 | 只看该作者

不过还是建议多检查下initUART()函数中个相关配置寄存器的使用情况的

使用特权

评论回复
13
liliang9554|  楼主 | 2017-3-17 23:21 | 只看该作者
嗯,那我按大家的说法挨个排查一下,先结贴啦,谢谢哈

使用特权

评论回复
14
lefeng| | 2017-3-29 21:01 | 只看该作者
发送开始无波形可能是软件原因

使用特权

评论回复
15
febgxu| | 2017-4-1 21:15 | 只看该作者
这个需要上位机有key的功能。

使用特权

评论回复
16
febgxu| | 2017-4-1 21:18 | 只看该作者
使用软件调用键盘的功能。

使用特权

评论回复
17
isseed| | 2017-4-2 10:03 | 只看该作者
这个是上位机的功能

使用特权

评论回复
18
isseed| | 2017-4-2 10:06 | 只看该作者
楼主要是实现这个上位机软件还是下位机接收?

使用特权

评论回复
19
lzbf| | 2017-4-2 21:06 | 只看该作者
这个使用键盘输入数据就行。

使用特权

评论回复
20
lzbf| | 2017-4-2 21:11 | 只看该作者
软件响应key(e)这个函数。

使用特权

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

本版积分规则

950

主题

11568

帖子

6

粉丝