工具/软件:Code Composer Studio
您好,
我正在尝试通过MSP430F5529LP的WFP 4.4 和4.5 UART在Teraterm终端上打印字符串。 我只打印字符串一次,只是为了测试它,我没有将代码置于无限循环中。 问题是在Teraterm上收到字符串一次后,我连续收到垃圾值。
以下是我在字符串后收到的垃圾值:
终端上的波特率和配置代码相同(即11.52万)。 当我在函数中放置断点并在调试中使用step检查主代码时,代码工作正常,除了字符串,我没有收到任何垃圾值。 当我在没有断点的情况下运行代码时,我会在字符串后面收到垃圾值。 我还检查了UCA1TXBUF寄存器中的最后一个值,这是传输的字符串字符的最后一个值。
下面的"printstring"函数是我为传递字符串而编写的函数:
void printstring(car *buff,char length)
{
int i;
for (I=0;i<length;i++,buff ++){
while (!(UCA1IFG&UCTXIFG));
UCA1TXBUF =*buff;
}
}
下面是我正在使用的UART的初始化代码:
void initUART()
{
P4SEL |= BIT5+BIT4; // WFP 3.3 ,4 = USI_A0 TXD/RXD
UCA1CTL1 |= UCSWRST; //**将状态机置于复位**
UCA1CTL1 || UCSSEL_2; // SMCLK
UCA1BR0 = 9; // 1MHz 11.52万 (请参阅用户指南)
UCA1BR1 = 0; // 1MHz 11.52万
UCA1MCTL || UCBRS_1 + UCBRF_0; //调制UCBRSx=1,UCBRFx=0
UCA1CTL1 &=~UCSWRST; //**初始化USCI状态机**
}
下面是我正在测试的主要代码:
#include <msp430f5529.h> #include "UART.h"
int main (void) { initUART(); _ASM ("NOP"); printstring("Hello",5);}
希望有人能帮我解决这个问题。
谢谢
