完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
用MSP430F149进行UART1串口调试,结果出现了乱码,求大神解答,截图和源程序如下,源程序是拿现成的别人写好的UART0串口通信程序改的 /****************************************************** 程序功能:用UART接收来自PC机的字符,然后重新发送给PC机 ------------------------------------------------------- 通信格式:N.8.1, 9600 无校验,8个数据位,1个停止位,波特率9600 ------------------------------------------------------ 测试说明:打开SSCOM,正确设置通信格式,用电脑给板子发送一个 字符或者是字符串(字符和字符串结尾必须添加结束 符''),观察PC机是否正确收到回发的字符 *******************************************************/ #include uchar RecBuf[256]; uchar Windex; uchar Rindex; //void Send1Char(uchar sendchar); void Send2Char(uchar sendchar2); void PutString(uchar *ptr); /********************主函数********************/ void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 //配置串口P3.6和P3.7 P3SEL |= 0xc0; // 选择P3.6和P3.7做UART通信端口 ME2 |= UTXE1 + URXE1; // 使能USART1的发送和接受 UCTL1 |= CHAR; // 选择8位字符 UTCTL1 |= SSEL1; // SMLK为串口时钟 UBR01 = 0x03; // 波特率9600 UBR11 = 0x00; // UMCTL1 = 0x4A; // Modulation UCTL1 &= ~SWRST; // 初始化UART状态机 IE2 |= URXIE1; // 使能USART1的接收中断 _EINT(); Windex = 0; Rindex = 0; PutString(" 这是一个测试能够显示中文的串口调试工具SSCOM32的示例程序"); PutString("发送栏输入单个或多个字符(英文字母、数字或者汉字,可以任意组合), 但是在字符的结尾必须添加结束符号'\',点击发送后观察PC机屏幕显示接收结果"); while(1) { while(Rindex != Windex) { Send2Char(RecBuf[Rindex++]); //将收到的字符发送出去 Rindex &= 0x3f; } //Send1Char(0x0d); //说明0x0d0a是软件SSCOM32的换行指令 //Send1Char(0x0a); LPM1; } } /******************************************* 函数名称:UART1_RXISR 功 能:UART1的接收中断服务函数,在这里唤醒 CPU,使它退出低功耗模式 参 数:无 返回值 :无 ********************************************/ #pragma vector = UART1RX_VECTOR __interrupt void UART1_RXISR(void) { if(RXBUF1 == '\') LPM1_EXIT; else { RecBuf[Windex++] = RXBUF1; Windex &= 0x3f; } } /****************************************** 函数名称:Send2Char 功 能:UART1向PC机发送一个字符 参 数:sendchar--要发送的字符 返回值 :无 ********************************************/ void Send2Char(uchar sendchar2) { while (!(IFG2 & UTXIFG1)); //等待发送寄存器为空 TXBUF1 = sendchar2; } /******************************************* 函数名称:PutSting 功 能:向PC机发送字符串 参 数:ptr--指向发送字符串的指针 返回值 :无 ********************************************/ void PutString(uchar *ptr) { while(*ptr != ' |