主题中讨论的其他器件: MSP430FR6877
您好!
我正在尝试使用 UART 在 MSP430FR4133和 MSP430FR6877 MCU 之间建立通信。 MSP430FR4133采用32.768KHz 的外部晶振来工作。 下面是我用于 UART 初始化的代码片段:
void inituart()
{
P1SEL0 |=(BIT0 | BIT1);
UCA0CTLW0 &=~μ m (UCSYNC);
UCA0CTLW0 |= UCSWRST; //将 eUSCI 复位
UCA0CTLW0 |= UCSSEL_UCLK; // CLK = UCLK
UCA0BR0 = 3; //32000/9600
UCA0BR1 = 0x00;
UCA0MCTLW ~(UCOS16);
UCA0CTLW0 &=~μ m (UCSWRST); //初始化 eUSCI
UCA0IE |= UCRXIE;
}
我发送的字符串如下
guckfactor_array[8]='\0';
guckfactor_array[7]=(((int) digit8)+ 0x30);
guckfactor_array[6]=(((int) digit7)+ 0x30);
guckfactor_array[5]=(((int) digit6)+ 0x30);
guckfactor_array[4]=(((int) digit5)+ 0x30);
guckfactor_array[3]=((( int ) digit4 )+ 0x30 );
guckfactor_array[2]=((( int ) digit3 )+ 0x30 );
guckfactor_array[1]=(((int) digit2)+ 0x30);
guckfactor_array[0]=(((int) digit1)+ 0x30 );
inituart();
UARTPutString (guckfactor_array);
在代码中、字符串是通过将每个数字分配给数组元素并将其转换为 ASCII 来构建的。
用于向 UART 发送数据的片段如下
void UARTPutString (字符*str)
{
无符号 int i=0;
while (str[i]!='\0')//检查 NULL 字符以终止循环
{
while (!(UCA0IFG 和 UCTXIFG));
UCA0TXBUF = str[i];
__ delay_cycles (10);
I++;
}
}
但是,当第一个字节被写入时UCA0TXBUF
,UCTXIFG
标志被重置,但UCTXCPTIFG
标志保持未设置状态。 因此、程序在 while 条件下进入一个无限循环。 似乎是数据没有被成功的传输到移位寄存器TXBUF
.我怎么知道数据是否被 TXBUF 放入移位寄存器? 我在 PuTTY 上没有看到任何内容。我由此推断出什么?请查看代码并建议解决方案。CCS 版本为12.0.0
谢谢。此致。
Pratik.