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.

[参考译文] EVM430-FR6047:EVM430FR6047

Guru**** 2474630 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1309956/evm430-fr6047-evm430fr6047

器件型号:EVM430-FR6047

大家好!

我正在使用 EVM430FR6047评估板和另一个 Arduino 板、并尝试在两者之间使用 UART 通信。 我想做一个基本的任务、就是 从 EVM 板向 Arduino 发送一个"hello world"字符串。 我有以下代码、该代码是 TI 自己提供的、作为示例、我添加了字符串发送器件、但它不起作用。 我应该做什么才能成功发送?  

#包含
#包含

int main (空)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗

//配置 GPIO
P2SEL0 &=~(BIT0 | BIT1);
P2SEL1 |= BIT0 | BIT1;// USCI_A0 UART 操作

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

//启动最大 DCO 设置的时钟系统~8MHz
CSCTL0_H = CSKEY_H;//解锁 CS 寄存器
CSCTL1 = DCOFSEL_3 | DCORSEL;//将 DCO 设置为8MHz
CSCTL2 = SELM__VLOCLK | SELS__DCOCLK | SELM__DCOCLK;
CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;//设置所有分频器
CSCTL0_H = 0;//锁定 CS 寄存器

//针对 UART 模式配置 USCI_A0
UCA0CTLW0 = UCSWRST;//将 eUSCI 置于复位状态
UCA0CTLW0 |= UCSSEL_SMCLK;// CLK = SMCLK
//波特率计算
// 8000000/(16*9600)= 52.083
//分数部分= 0.083
//用户指南表24-4:UCBRSx=0x04
// UCBRFx= int ((52.083-52)*16)= 1
UCA0BRW = 52;// 800000/16/9600
UCA0MCTLW |= UCOS16| UCBRF_1 | 0x4900;
UCA0CTLW0 &=μ~UCSWRST;//初始化 eUSCI
UCA0IE |= UCRXIE;//启用 USCI_A0 RX 中断

//将"Hello World"写入串行端口
char HelloWorld[]="Hello World";
INT I;

对于(I = 0;I < strlen (HelloWorld);I++)
{
while (!(UCA0IFG 和 UCTXIFG));
UCA0TXBUF = HelloWorld[i];

__ bis_SR_register (LPM3_bits + GIE);//输入 LPM3、中断被启用
__ no_operation ();//表示调试器

#if defined (__TI_Compiler_version__)|| defined (__IAR_SYSTEMS_ICC__)
#pragma vector=EUSCI_A0_vector
__interrupt void USCI_A0_ISR (void)
#Elif 已定义(_ GNU _)
void __attribute_((interrupt (EUSCI_A0_vector)) USCI_A0_ISR (void)
#else
#错误编译器不受支持!
#endif
{
switch (__even_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:中断;
默认值:中断;

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

    您的意思是、它不起作用? 您是否使用振荡器捕捉 UART 端口上的波形?