我在 CCS V8中运行 UART 示例 msp430fr599x_euscia0_UART_01。 在 Resource Explorer 中运行准确的代码时、当输入 LPM3时、它将无法可靠工作、接收到的字符通常是乱码。 如果我修改代码、使其无法放入 LPM3中、则可以正常工作。
我的 PC 通过 FTDI USB 转 UART 电缆发送字符。 它使用3.3V 电压、因此无需进行转换。 我将 PuTTY 用于 COM 端口 S/W
电压电平和位时序在示波器上看起来很好。 我不认为这是硬件问题、因为它在没有 LPM3的情况下工作正常。
从 PC 发送"A"、gu16UartRecv (用于故障排除的新温度变量)
应为:
0000000001100001b (0x61)
有时还可以、但使用 LPM3时通常是错误的:
0000000011011000b
000000001111110b
因此、问题出在 FR5994的收据中、而不是在传输中。
我不需要 LPM 来完成该项目、但我可能需要 LPM 来完成未来的项目。
下面的部分代码、从用@@@μ m 注释的原始代码修改的行。 这是有效的,原件是无效的。
(笑声)
UCA3IE |= UCRXIE;//启用 USCI_A3 RX 中断
__bis_SR_register ( GIE ); //@@@中断被启用
while (1) //@@@不要输入 LPM
{
}
_bis_SR_register (LPM3_bits | GIE);//输入 LPM3、中断被启用
__no_operation();//用于调试器
}
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=EUSCI_A3_Vector
_interrupt void USCI_A3_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(EUSCI_A3_Vector)) USCI_A3_ISR (void)
其他
错误编译器不受支持!
#endif
{
switch (__evo_in_range (UCA3IV、USCI_UART_UCTXCPTIFG))
{
USCI_NONE 案例:中断;
USCI_UART_UCRXIFG 案例:
while (!(UCA3IFG&UCTXIFG));
gu16UartRecv = UCA3RXBUF;//@@@ Save received char for debug
UCA3TXBUF = gu16UartRecv;
__no_operation();
中断;