430的串口通信问题

2019-07-30 15:59发布

程序欲实现功能,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 != '')
      {
            while (!(IFG1 & UTXIFG0));             // TX缓存空闲?
            TXBUF0 = *ptr++;                       // 发送数据
      }
      while (!(IFG1 & UTXIFG0));
      TXBUF0 = ' ';
}
/*******************************************
函数名称: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
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
jlyuan
1楼-- · 2019-07-30 20:54
没发现什么问题啊
heweibig
2楼-- · 2019-07-30 22:11
 精彩回答 2  元偷偷看……
jiajs
3楼-- · 2019-07-30 23:49
能接收到,只能接收到首位,和末位两个字符
zhaoxqi
4楼-- · 2019-07-31 03:17
你的串口协议是怎么定义的。你的接收程序应该有问题,找个例程修改下
wuhany
5楼-- · 2019-07-31 07:55
能收到两个  问题就不在串口上
jiajs
6楼-- · 2019-07-31 12:49
哈哈,找到问题原因了

一周热门 更多>