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:UART串行TX和RX不工作。

Guru**** 2595805 points
Other Parts Discussed in Thread: MSP-EXP430FR4133, ENERGIA, MSP430FR4133

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/642958/ccs-uart-serial-tx-and-rx-not-working

主题中讨论的其他部件:MSP-EXP430FR4133ENERGIAMSP430FR4133

工具/软件:Code Composer Studio

您好,

我正在使用MSP-EXP430FR4133启动板。 我可以在Energia中获得UART TX和RX,但在Code composer studio中,我尝试了库中提供的API,也尝试了使用寄存器的程序。 我无法完成。 我在下面附上了代码。 有人能帮忙吗?

源代码。

#include"msp430fr4133.h"
#include<stdio.h>
#include"eusci_a_UART.h"
#define TXD BIT0
#定义RXD BIT1.
void init_gPIO();
void main()

UINT8_t txdata;
uINT8_t rxdata;
INT状态;
volatile unsigned int j;
易失性无符号int I;

//*********** 起点************************** //
//------------------------------------------------ //
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

init_gPIO();//禁用GPIO通电默认高阻抗模式以激活先前配置的端口设置

EUSCI_A_UART_initParammy_UART_param;//我们需要声明strcutre的实例,以便可以将参数分配给此结构

my_uart_param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK;//用于外围设备工作
my_UART_param.clockPrescalar = 104;//使用16 MHz时钟设置波特率
my_UART_param.firstModReg = 2;
my_uart_param.secondModReg = 0xd6;
my_UART_param.parity = EUSCI_A_UART_NO_parity;
my_UART_param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST;
my_UART_param.numberofStopBits = EUSCI_A_UART_ONE_STOP_BIT;
my_UART_param.uartMode = EUSCI_A_UART_MODE;
my_UART_param.oversampling = EUSCI_A_UART_low_frequency_BAUDRATE_generation;

EUSCI_A_UART_initParam * PTR_my_UART =& my_UART_param;

P1SEL0 |=(BIT0 |BIT1);

P1DIR = BIT0;// WFP 1.1 = RXD,WFP 1.2 = TXD

EUSCI_A_UART_DISABLE(EUSI_A0_base);//初始化过程中的步骤1

EUSCI_A_UART_INIT (EUSCI_A0_BASE,PTR_my_UART);//步骤2初始化

// UCA0STATW |= UCLISTEN;//回送模式

EUSCI_A_UART_ENABLE (EUSSCI_A0_base);//重置UCSRST位以启用USCI模块

//EUSCI_A_UART_enableInterrupt (EUSI_A0_base,(EUSSCI_A_UART_receive _interrupt | EUSCI_A_UART_Transmit_interrupt | EUSCI_A_UART_STARTBIT_INTERRUST| EUSCI_A_UART_Transmit_Complete_Interrupt ));

同时(1)

Txdata ^= 0x10;

EUSCI_A_UART_TransData(EUSI_A0_base, txdata);//传输数据;

while (!(EUSCI_A_UART_getInterruptStatus (EUSCI_A0_BASE,EUSCI_A_UART_Transmit_Complete_InterrupT_flag)))


}

rxdata = EUSCI_A_UART_receiveData(EUSI_A0_base);//将接收到的数据存储在变量中。当读取RXBUF时,RXIFG标志会自动重置

IF (rxdata=0x10)

状态=1;

}
否则

状态=2;
}
开关(状态)

案例1:P4DIR|=0x01;
对于(i=1000;i>0;i--)

P4OUT=0x01;
}
P4OUT=0x00;
中断;
案例2:P4DIR|=0x00;
对于(i=5000;i>0;i--)

P4OUT=0x00;
}

中断;
}


}


}
void init_gpio (void)

//将所有GPIO配置为低输出
//确保与原理图相关的针脚没有冲突
P1OUT = 0x00;P2OUT = 0x00;P3OUT = 0x00;P4OUT = 0x00;
P5OUT = 0x00;P6OUT = 0x00;P7OUT = 0x00;P8OUT = 0x00;

P1DIR = 0xFD;P2DIR = 0xFF;P3DIR = 0xFF;P4DIR = 0xFF;
P5DIR = 0xFD;P6DIR = 0xFF;P7DIR = 0xFF;P8DIR = 0xFF;

PM5CTL0 &=~LCKLPM5;//禁用GPIO开机默认高阻抗模式//以激活先前为低功耗模式配置的端口设置5
}

是否有任何其他用于UART的源代码。 ?

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

    您好,Kamalesh,

    您可能没有正确设置GPIO,因此eUSCI模块可以将其用于UART通信。 您需要为用于UART通信的相应引脚设置相应的PxSELy位。 在TI资源浏览器中可以找到几个示例。 我建议同时查看 寄存器级别示例驱动程序库示例

    此外 ,请查看MSP430 MCU 上常见eUSCI和USCI串行通信问题解决方案应用报告的常规和UART部分,了解有关执行串行通信时最常见问题的更多详细信息。

    此致,  
    Caleb Overbay