This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F437:串行端口通信问题

Guru**** 662690 points
Other Parts Discussed in Thread: MSP430F437
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1072850/msp430f437-serial-port-communication-issue

部件号:MSP430F437

大家好,团队

以下是客户提出的一些问题可能需要您的帮助:

#include <MSP4C.h>


/**
*主要
*
Int main (无效)

WDTCTL = WDTPW + WDTHOLD;//停止 WDT
FLL_CTL0 |= XCAP18PF;//配置负载上限

P2SEL |= 0x30;// P2.4,5 = USART0 TXD/RXD
ME1 |= UTXE0 + URXE0;//启用 USART0 TXD/RXD
UCTL0 |=字符;// 8位字符
// UTCTL0 |= SSEL1;// UCLK = SMCLK
// UBR00 = 0x6D;// 1MHz 9600
// UBR10 = 0x00;// 1MHz 9600
// UMMCTL0 = 0x03;//调制

UTCTL0 |= SSEL0;
UBR00 = 0x03;
UBR10 = 0x00;
UMMCTL0 = 0x4A;
UCTL0和=~SWRST;//初始化 USART 状态机
IE1 |= URXIE0;//启用 USART0 RX 中断
P2DIR |= 0x10;// P2.4输出方向
同时(!(IFG1和 UTXIFG0));
TXBUF0 ='H';
同时(!(IFG1和 UTXIFG0));
TXBU0 ='E';
同时(!(IFG1和 UTXIFG0));
TXBU0 ='L';
同时(!(IFG1和 UTXIFG0));
TXBU0 ='L';
同时(!(IFG1和 UTXIFG0));
TXBUF0 ='O';
__bis_SR_register (LPM0_bits + GIE);//输入带 interrup 的 LPM0
//while (1);
}

#IF 定义(__TI_Compiler_version__)||定义(__IAR_SYSTEMS _ICC__)
#pragma vector=USART0RX_vector
__interrupt void usart0_Rx (void)
#Elif Defined (__GNUC _)
void __attribute__(中断(USART0RX_Vector)) usart0_Rx (void)
#else
错误编译器不受支持!
#endif

何时(!(IFG1 & UTXIFG0);// USART0 TX 缓冲器准备就绪?
TXBUF0 = RXBUF0;// RXBUF0至 TXBU0
}

问题:将程序下载到 MSP430F437的单片机之后,PC 的串行端口工具首先收到“hello”,然后连续收到“LOL0...” ."

请帮您检查此案例? 谢谢。

此致,

樱桃

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Cherry,

    您可以尝试使用此代码(删除以下代码):https://dev.ti.com/tirex/explore/node?node=ALp4exgvfsAD-wA.0I15qA__IOGqZri__LATEST

    同时(!(IFG1和 UTXIFG0));
    TXBUF0 ='H';
    同时(!(IFG1和 UTXIFG0));
    TXBU0 ='E';
    同时(!(IFG1和 UTXIFG0));
    TXBU0 ='L';
    同时(!(IFG1和 UTXIFG0));
    TXBU0 ='L';
    同时(!(IFG1和 UTXIFG0));
    TXBUF0 ='O';

    我认为这一问题可能是由于未清除 RX 标志或硬件导致的。

    谢谢!

    此致

    约翰逊