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.

[参考译文] MSP430FR2311:MSP430FR2311 UART 不工作

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1082454/msp430fr2311-msp430fr2311-uart-not-working

部件号:MSP430FR2311

您好,

我们使用以下代码从 UART 传输数据。 为此,我们使用 MSP430FR2311控制器。  运行代码后,我们无法在串行监视器上接收数据。

谢谢!


#include <MSP4C.h>
#include <msp430fr2311.h>


/**
*主要
*

未签名的 int 接收数据=0;

void 振荡器集(void)

__bis_SR_register (SCG0);//禁用 FLL
CSCTL3 |= SELREF__REFOCLK;//将 REFO 设置为 FLL 参考源
CSCTL1 = DCOFTRIMEN_1 | DCOFTRIM0 | DCOFTRIM1 | DCORSEL_3;// DCOFTRIM=3,DCO 范围= 8MHz
CSCTL2 = FLLD_0 + 243;// DCODIV = 8MHz
__delay_cycles (3);
__BIC_SR_REGISTER (SCG0);//启用 FLL
}

void delay_ms (无符号 int ms)

While (ms-)(毫秒-)

__delay_cycles (1000);
}
}

无艺术气息(无效)

P1SEL0 |= BIT6 | BIT7;//配置 UART 引脚设置2-UART 引脚作为第二个功能
//配置 UART

UCA0CTLW0 |= UCSWRST;//设置软件重置启用
UCA0CTLW0 |= UCSSEL_2;//将 SMCLK 设置为 BRCLK 以用于9600的波特率

//波特率设置为9600

UCA0BR0 = 52;
UCA0MCTLW = 0x4900;
UCA0BR1 = 1;

PM5CTL0和=~LOCKLPM5;

UCA0CTLW0 &=~UCSWRST;//初始化 eUSCI

}

作废艺术发送(作废)

While (!(UCA0IFG 和 UCTXIFG));
UCA0TXBUF = 0x02;
}

作废 uartReceive(void)

While (!(UCA0IFG 和 UCRXIFG));
// UCA0RXBUF = UCA0TXBUF;
接收数据= UCA0RXBUF;
}

Int main (无效)

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
振荡器 Set();
阿特英特();

PM5CTL0和=~LOCKLPM5;

//__delay_cycles (100);

While (1)(同时)

// uartReceive();
延迟_ms (100);
uartSend();
}

}

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

    > UCA0BR1 = 1;

    在用户指南(SLAU445I)表22-5中,第三列实际上是 UCOS16,因此请尝试

    > UCA0MCTLW |= UCOS16; //根据 SLAU445I 表22-5.

    -----

    > UCA0TXBUF = 0x02;

    许多终端仿真器不会显示 ASCII 代码0x02的任何内容,因此我建议使用可打印的内容。 在示波器上显示字符"U"(0x55):

    > UCA0TXBUF ='U';// 0x55可打印,对范围也很有用