打印
[MCU]

串口通信问题

[复制链接]
390|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiajs|  楼主 | 2019-6-16 13:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序欲实现功能,PC端向MCU发字符串,然后在1602上显示
错误:只能显示首位两个字符。
调试:将波特率改为2400,仍然失败;
主频调到8mhz.也不行,
说明;液晶模块调试没问题,求指教
下面是主要代码:
#include  <msp430.h>
#include"cry1602.c"
#include  "cry1602.h“
void InitUART(void);
void PutString(uchar *ptr);
/***************主函数************/
void main( void )
{
    /*下面六行程序关闭所有的IO口*/
    P1DIR = 0XFF1OUT = 0XFF;
    P2DIR = 0XFF2OUT = 0XFF;
    P3DIR = 0XFF3OUT = 0XFF;
    P4DIR = 0XFF4OUT = 0XFF;
    P5DIR = 0XFF5OUT = 0XFF;
    P6DIR = 0XFF6OUT = 0XFF;
    uchar pX=0,pY=0;
    uchar *tishi = "Send data to MCU”;
    WDTCTL = WDTPW + WDTHOLD;     //关狗
    P6DIR |= BIT26OUT |= BIT2;  //关闭电平转换  
    InitUART();                   //初始化UART
    LcdReset();                   //初始化LCD
     PutString(tishi);
    while(1)
    {
        while(IFG1 & URXIFG0)      //如果收到字符
        {
            Disp1Char(pX++,pY,U0RXBUF);
            if(pX == 16)
            {
                pX  = 0;
                pY ^= 1;
            }
        }
    }
   
}
/*******************************************
函数名称:PutSting
功    能:向PC机发送字符串
参    数:ptr--指向发送字符串的指针
返回值  :无
********************************************/
void PutString(uchar *ptr)
{
      while(*ptr != '\0')
      {
            while (!(IFG1 & UTXIFG0));             // TX缓存空闲?
            TXBUF0 = *ptr++;                       // 发送数据
      }
      while (!(IFG1 & UTXIFG0));
      TXBUF0 = '\n';
}
/*******************************************
函数名称:InitUART
功    能:初始化UART端口
参    数:无
返回值  :无
********************************************/
void InitUART(void)
{
    P3SEL |= 0x30;                            // P3.4,5 = USART0 TXD/RXD
    ME1 |= URXE0 + UTXE0;                             // Enable USART0 T/RXD
    UCTL0 |= CHAR;                            // 8-bit character
    UTCTL0 |= SSEL0;                          // UCLK = ACLK
    UBR00 = 0x0d;                             // 32k/9600 - 3.41
    UBR10 = 0x00;                             //
    UMCTL0 = 0x6b;                            // Modulation
    UCTL0 &= ~SWRST;                          // Initialize USART state machine
}

使用特权

评论回复

相关帖子

沙发
jlyuan| | 2019-6-16 13:36 | 只看该作者
没发现什么问题啊

使用特权

评论回复
板凳
heweibig| | 2019-6-16 13:39 | 只看该作者
你串口发过来的数据都能接收到不?先查下

使用特权

评论回复
地板
jiajs|  楼主 | 2019-6-16 13:42 | 只看该作者

能接收到,只能接收到首位,和末位两个字符

使用特权

评论回复
5
zhaoxqi| | 2019-6-16 13:44 | 只看该作者
你的串口协议是怎么定义的。你的接收程序应该有问题,找个例程修改下

使用特权

评论回复
6
wuhany| | 2019-6-16 13:47 | 只看该作者

能收到两个  问题就不在串口上

使用特权

评论回复
7
spark周| | 2019-6-16 13:50 | 只看该作者

那就是所这个数据发送的问题的?

使用特权

评论回复
8
wyjie| | 2019-6-16 13:56 | 只看该作者
也不能直接说液晶显示上就没问题的,,先看下1602的显示能力的是否满足的

使用特权

评论回复
9
zhaoxqi| | 2019-6-16 13:59 | 只看该作者

你发送的是字符还是hex?
楼主你应该发送字符串过来才行。

使用特权

评论回复
10
shimx| | 2019-6-16 14:02 | 只看该作者
写入数据的地址有问题。
使用单步调试,看看你的接收字符串是不是匹配。

使用特权

评论回复
11
zhaoxqi| | 2019-6-16 14:05 | 只看该作者

应该发送字符串
接收字符串是不是匹配

使用特权

评论回复
12
jiajs|  楼主 | 2019-6-16 14:08 | 只看该作者
结贴了,多谢大家讨论这么多哈,呵呵

使用特权

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

本版积分规则

940

主题

11975

帖子

6

粉丝