请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401R 尊敬的所有人:
通过 Putty、我向"Application/User UART" COM 端口(eUSCI_A0)发送一些字符串。
然后将这个字符串发送到 eUSCI_A2并传回 eUSCI_A0。
但是 、"Application/User UART" COM 端口没有输出。
请告诉我代码中的错误。
PS:
当然、如果我更改
MAP_UART_transmitData (EUSCI_A2_base、MAP_UART_receiveData (EUSCI_A0_BASE);
更改为
MAP_UART_transmitData (EUSCI_A0_BASE、MAP_UART_receiveData (EUSCI_A0_BASE));
然后
此代码正常工作、但我想通过 eUSCI_A2 UART 模块回显。
=== 我的代码===
/* DriverLib 包括*/
#include
#include
/*标准包括*/
#include
#include
#include
#include
//***** 全局变量
uint32_t myDCO = 0;
uint32_t myACLK = 0;
uint32_t myBCLK = 0;
uint32_t myHSMCLK = 0;
uint32_t myMCLK = 0;
uint32_t mySMCLK = 0;
uint32_t myDCO = 0;
uint32_t myACLK = 0;
uint32_t myBCLK = 0;
uint32_t myHSMCLK = 0;
uint32_t myMCLK = 0;
uint32_t mySMCLK = 0;
//![简单 UART 配置]
/* UART 配置参数。 这些是的配置参数
*使 eUSCI 成为 UART 模块以9600波特率运行。 这些
*值是使用 TI 提供的在线计算器计算得出的:
* software-dl.ti.com/.../index.html
* //波特率计算
* // 12000000/(16*9600)= 78.125
* //分数部分= 0.125
* //用户指南表21-4:UCBRSx = 0x10
* // UCBRFx = int (78.125-78)*16)= 2.
*
const eUSCI_UART_Config uartConfig =
{
EUSCI_A_UART_CLOCKSOURCE_SMCLK、 // SMCLK 时钟源
78、 // BRDIV = 78
2、 // UCxBRF = 2
0、 // UCxBRS = 0
EUSCI_A_UART_NO_奇 偶校验、 //无奇偶校验
EUSCI_A_UART_LSB_FIRST、 // LSB 优先
EUSCI_A_UART_One_stop_bit、 //一个停止位
EUSCI_A_UART_MODE、 // UART 模式
EUSCI_A_UART_oversampling_BAUDRATE_generation //过采样
};
//![简单 UART 配置]
/* UART 配置参数。 这些是的配置参数
*使 eUSCI 成为 UART 模块以9600波特率运行。 这些
*值是使用 TI 提供的在线计算器计算得出的:
* software-dl.ti.com/.../index.html
* //波特率计算
* // 12000000/(16*9600)= 78.125
* //分数部分= 0.125
* //用户指南表21-4:UCBRSx = 0x10
* // UCBRFx = int (78.125-78)*16)= 2.
*
const eUSCI_UART_Config uartConfig =
{
EUSCI_A_UART_CLOCKSOURCE_SMCLK、 // SMCLK 时钟源
78、 // BRDIV = 78
2、 // UCxBRF = 2
0、 // UCxBRS = 0
EUSCI_A_UART_NO_奇 偶校验、 //无奇偶校验
EUSCI_A_UART_LSB_FIRST、 // LSB 优先
EUSCI_A_UART_One_stop_bit、 //一个停止位
EUSCI_A_UART_MODE、 // UART 模式
EUSCI_A_UART_oversampling_BAUDRATE_generation //过采样
};
//![简单 UART 配置]
int main (空)
{
/*停止 WDT */
MAP_WDT_A_HOLDTimer();
{
/*停止 WDT */
MAP_WDT_A_HOLDTimer();
/*在 UART (eUSCA0)模式下选择 P1.2和 P1.3 - GPIO 初始化*/
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P1、
GPIO_PIN2 | GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION);
/*在 UART (eUSCA2)模式下选择 P3.2和 P3.3 - GPIO 初始化*/
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、
GPIO_PIN2 | GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION);
/*红色 LED 熄灭 */
GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);
GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN0);
GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN1);
GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN1);
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P1、
GPIO_PIN2 | GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION);
/*在 UART (eUSCA2)模式下选择 P3.2和 P3.3 - GPIO 初始化*/
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、
GPIO_PIN2 | GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION);
/*红色 LED 熄灭 */
GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);
GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN0);
GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN1);
GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN1);
/*将 DCO 设置为12MHz */
CS_setDCOCenteredFrequency (CS_DCO_FREQUENCY 12);
CS_setDCOCenteredFrequency (CS_DCO_FREQUENCY 12);
myDCO = MAP_CS_getDCOFrequency ();
myACLK = MAP_CS_getACLK ();
myBCLK = MAP_CS_getBCLK ();
myMCLK = MAP_CS_getMCLK ();
myHSMCLK = MAP_CS_getHSMCLK ();
mySMCLK = MAP_CS_getSMCLK ();
myACLK = MAP_CS_getACLK ();
myBCLK = MAP_CS_getBCLK ();
myMCLK = MAP_CS_getMCLK ();
myHSMCLK = MAP_CS_getHSMCLK ();
mySMCLK = MAP_CS_getSMCLK ();
//![简单 UART 示例]
/*配置 UART 模块*/
MAP_UART_initModule (EUSCI_A0_BASE、uartConfig);
MAP_UART_initModule (EUSCI_A2_base、uartConfig);
/*配置 UART 模块*/
MAP_UART_initModule (EUSCI_A0_BASE、uartConfig);
MAP_UART_initModule (EUSCI_A2_base、uartConfig);
/*启用 UART 模块*/
MAP_UART_enableModule (EUSCI_A0_BASE);
MAP_UART_enableModule (EUSCI_A2_base);
MAP_UART_enableModule (EUSCI_A0_BASE);
MAP_UART_enableModule (EUSCI_A2_base);
/*启用中断*/
MAP_UART_enableInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_receive_interrupt);
MAP_Interrupt_enableInterrupt (INT_EUSCIA0);
MAP_UART_enableInterrupt (EUSCI_A2_base、EUSCI_A_UART_receive_interrupt);
MAP_Interrupt_enableInterrupt (INT_EUSCIA2);
MAP_Interrupt_enableSlepOnIsrExit();
MAP_Interrupt_enableMaster();
//![简单 UART 示例]
MAP_UART_enableInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_receive_interrupt);
MAP_Interrupt_enableInterrupt (INT_EUSCIA0);
MAP_UART_enableInterrupt (EUSCI_A2_base、EUSCI_A_UART_receive_interrupt);
MAP_Interrupt_enableInterrupt (INT_EUSCIA2);
MAP_Interrupt_enableSlepOnIsrExit();
MAP_Interrupt_enableMaster();
//![简单 UART 示例]
while (1)
{
MAP_PCM_gotoLPM0InterruptSafe ();
}
}
{
MAP_PCM_gotoLPM0InterruptSafe ();
}
}
/* EUSCI A0 UART ISR -将数据回传到 PC 主机*/
空 EUSCIA0_IRQHandler (空)
{
uint32_t status = MAP_UART_getEnabledInterruptStatus (EUSCI_A0_BASE);
空 EUSCIA0_IRQHandler (空)
{
uint32_t status = MAP_UART_getEnabledInterruptStatus (EUSCI_A0_BASE);
MAP_UART_clearInterruptFlag (EUSCI_A0_BASE、STATUS);
IF (STATUS 和 EUSCI_A_UART_receive_interrupt_FLAG)
{
MAP_UART_transmitData (EUSCI_A2_base、MAP_UART_receiveData (EUSCI_A0_BASE);
GPIO_toggleOutputOnPin (GPIO_PORT_P1、GPIO_PIN0);
}
}
{
MAP_UART_transmitData (EUSCI_A2_base、MAP_UART_receiveData (EUSCI_A0_BASE);
GPIO_toggleOutputOnPin (GPIO_PORT_P1、GPIO_PIN0);
}
}
/* EUSCI A2 UART ISR -将数据回传到 PC 主机*/
空 EUSCIA2_IRQHandler (空)
{
uint32_t status = MAP_UART_getEnabledInterruptStatus (EUSCI_A2_base);
空 EUSCIA2_IRQHandler (空)
{
uint32_t status = MAP_UART_getEnabledInterruptStatus (EUSCI_A2_base);
MAP_UART_clearInterruptFlag (EUSCI_A2_base、status);
IF (STATUS 和 EUSCI_A_UART_receive_interrupt_FLAG)
{
MAP_UART_transmitData (EUSCI_A0_BASE、MAP_UART_receiveData (EUSCI_A2_BASE));
GPIO_toggleOutputOnPin (GPIO_PORT_P2、GPIO_PIN1);
}
}
{
MAP_UART_transmitData (EUSCI_A0_BASE、MAP_UART_receiveData (EUSCI_A2_BASE));
GPIO_toggleOutputOnPin (GPIO_PORT_P2、GPIO_PIN1);
}
}
===我的代码结束===