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.

[参考译文] CCS/MSP430FR5043:无法通过 UART 进行通信

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430FR5043

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/845240/ccs-msp430fr5043-could-not-communicate-through-uart

器件型号:MSP430FR5043

工具/软件:Code Composer Studio

H、

我正在尝试通过 UART 与 MSP430FR5043定制板进行通信。 我已附上以下代码。 我刚刚使用了内置库代码并将其修改为我的设计。 但代码无法正常工作、或者串行监视器(PuTTy)没有输出。 我已将波特率配置为9600并且没有流控制。 我的代码应在 PuTTY 窗口中传输数字1、但未发生任何情况。 请指导我的代码出错的地方、因为我没有任何工作代码示例。下面是我的代码:

#include

volatile unsigned char RXData = 0;
volatile unsigned char TXData = 1;

int main (空)

WDTCTL = WDTPW | WDTHOLD;//停止看门狗

//配置 GPIO

P5SEL0 &=~(BIT0 | BIT1);
P5SEL1 |= BIT0 | BIT1;// USCI_A2 UART 操作
PJSEL0 |= BIT4 | BIT5;//配置 XT1引脚

//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;

// XT1设置
CSCTL0_H = CSKKEY_H;//解锁 CS 寄存器
CSCTL1 = DCOFSEL_0;//将 DCO 设置为1MHz
CSCTL2 = SELA_LFXTCLK | SELESS__DCOCLK | SELM_DCOCLK;
CSCTL3 = DIVA__1 | DIVM_1 | DIVM__1;//设置所有分频器
CSCTL4 &=~LFXTOFF;//启用 LFXT1
操作

CSCTL5 &=~LFXTOFFG;//清除 XT1故障标志
SFRIFG1 &=~OFIFG;
} while (SFRIFG1 & OFIFG);//测试振荡器故障标志
CSCTL0_H = 0;//锁定 CS 寄存器

//将 USCI_A2配置为 UART 模式
UCA2CTLW1 = UCSWRST;
UCA2CTLW1 |= UCSSEL_2;//设置 SMCLK
UCA2BRW = 3;// 9600波特
UCA2MCTLW |= 0x5300;// 32768/9600 - INT (32768/9600)=0.41
// UCBRSx 值= 0x53 (请参阅 UG)
UCA2CTLW1 &=~UCSWRST;//从复位中释放
UCA2IE |= UCRXIE;//启用 USCI_A2 RX 中断

_bis_SR_register (LPM3_bits | GIE);//输入 LPM3、中断被启用
__no_operation();//用于调试器


#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=EUSCI_A2_vector
_interrupt void USCI_A2_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(EUSCI_A2_vector)) USCI_A2_ISR (void)
其他
错误编译器不受支持!
#endif

switch (__evo_in_range (UCA2IV、USCI_UART_UCTXCPTIFG))

USCI_NONE 案例:中断;
USCI_UART_UCRXIFG 案例:
while (!(UCA2IFG&UCTXIFG));
UCA2TXBUF = UCA2RXBUF;
__no_operation();
中断;
案例 USCI_UART_UCTXIFG:中断;
案例 USCI_UART_UCSTTIFG:中断;
案例 USCI_UART_UCTXCPTIFG:中断;
默认值:break;