大家好、我正在尝试在 MSP430FR5969 Launchpad (MSP-EXP430FR5969)上配置 UART 配置。 我使用的是其中一个 TI 示例、特别是名为 msp430fr59xx_euscia0_UART_01.c 的示例、该程序应回显写入终端的用户字符。 但是、当我运行此程序时、我无法在串行 COM 端口中键入任何内容。 值得注意的是、我已经更改了 GPIO 引脚的配置(b/c 示例中为 RXD/TXD 使用了 P2.0和 P2.1、但这些是 launchpad 上的 P2.5/P2.6)。 除此之外、我不确定我的进度进度如何、是否有人会有解决此问题的策略? 下面显示了我正在使用的完整代码。 感谢您的任何帮助!
//配置 GPIO
P2SEL1 = 01100000; // USCI_A0 UART 操作
P2SEL0 = 00000000;
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;
//最大 DCO 设置~8MHz 的启动时钟系统
CSCTL0_H = CSKEY >> 8; //解锁时钟寄存器
CSCTL1 = DCOFSEL_3 | DCORSEL; //将 DCO 设置为8MHz
CSCTL2 = SELA_VLOCLK | SELESS__DCOCLK | SELM_DCOCLK;
CSCTL3 = DIVA__1 | DIVM_1 | DIVM__1; //设置所有分频器
CSCTL0_H = 0; //锁定 CS 寄存器
//将 USCI_A0配置为 UART 模式
UCA0CTLW0 = UCSWRST; //将 eUSCI 置于复位状态
UCA0CTLW0 |= UCSSEL_SMCLK; // CLK = SMCLK
//波特率计算
// 800000000 /(16*9600)= 52.083
//分数部分= 0.083
//用户指南表21-4:UCBRSx = 0x04
// UCBRFx = int ((52.083-52)*16)= 1.
UCA0BR0 = 52; // 800000000 / 16/9600
UCA0BR1 = 0x00;
UCA0MCTLW |= UCOS16 | UCBRF_1;
UCA0CTLW0 &=~UCSWRST; //初始化 eUSCI
UCA0IE |= UCRXIE; //启用 USCI_A0 RX 中断
_bis_SR_register (LPM3_bits | GIE); //输入 LPM3、中断被启用
__no_operation(); //用于调试器
}
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=USCI_A0_Vector
_interrupt void USCI_A0_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(USCI_A0_Vector)) USCI_A0_ISR (void)
其他
错误编译器不受支持!
#endif
{
switch (__evo_in_range (UCA0IV、USCI_UART_UCTXCPTIFG))
{
USCI_NONE 案例:中断;
USCI_UART_UCRXIFG 案例:
while (!(UCA0IFG&UCTXIFG));
UCA0TXBUF = UCA0RXBUF;
__no_operation();
中断;
案例 USCI_UART_UCTXIFG:中断;
案例 USCI_UART_UCSTTIFG:中断;
案例 USCI_UART_UCTXCPTIFG:中断;
}
}