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.

[参考译文] RTOS/MSP430F5529:RTOS/MSP430F5529:尝试在同一程序中使用两个 UART

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/601701/rtos-msp430f5529-rtos-msp430f5529-trying-to-use-two-uarts-in-the-same-program

器件型号:MSP430F5529

工具/软件:TI-RTOS

您好、Emmanuel、

我正在尝试在同一程序中使用两个 UART。 尽管我成功地操作了第二个 UART 并且 UART_Handle 不是 NULL,但执行 UART_write()没有效果。

===================================================================================================================================

以下是我对*5529.c 和*5529.h 文件所做的更改:

/*!
*@def MSP_EXP430F5529LP_UARTName
*@MSP_EXP430F5529LP 开发板上 UART 名称的简要枚举
*
typedef 枚举 MSP_EXP430F5529LP_UARTName{
MSP_EXP430F5529LP_UARTA0 = 0、
MSP_EXP430F5529LP_UARTA1、

MSP_EXP430F5529LP_UARTCOUNT
} MSP_EXP430F5529LP_UARTName;


CONST UARTUSCI_HWAttrs uartUSCIAHWAttrs[MSP_EXP430F5529LP_UARTCOUNT]={

baseAddr = USCI_A0_BASE、
时钟源= USCI_A_UART_CLOCKSOURCE_SMCLK、
.bitOrder = USCI_A_UART_LSB_FIRST、
numBudrateEndries = sizeof (uartUSCIABAURATS)/sizeof (UARTUSCIA_BAUDRAateConfig)、
.budrateLUT = uartUSCIA波特 率
}、

baseAddr = USCI_A1_base、
时钟源= USCI_A_UART_CLOCKSOURCE_SMCLK、
.bitOrder = USCI_A_UART_LSB_FIRST、
numBudrateEndries = sizeof (uartUSCIABAURATS)/sizeof (UARTUSCIA_BAUDRAateConfig)、
.budrateLUT = uartUSCIA波特 率
}、
};

const UART_Config UART_config[]={

.fxnTablePtr =&UARTUSCIA_fxnTable、
.object = uartUSCIAObjects[0]、
.hwAttrs = uartUSCIAHWAttrs[0]
}、

.fxnTablePtr =&UARTUSCIA_fxnTable、
.object = uartUSCIAObjects[1]、
.hwAttrs = uartUSCIAHWAttrs [1]
}、
{NULL、NULL、NULL}
};

*
*==== MSP_EXP430F5529LP_initUART ===
*
void MSP_EXP430F5529LP_initUART (void)

/* P3.3、4 = USCI_A1 TXD/RXD *
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、
GPIO_PIN3 | GPIO_PIN4);

/* P4.4、5 = USCI_A1 TXD/RXD *
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P4、
GPIO_PIN4 | GPIO_PIN5);

/*初始化 UART 驱动程序*/
UART_INIT();

========================================================================================================================================================

我的任务"uartecho"中有如下变化:

/*创建一个数据处理关闭的 UART。 *
UART_PARAMS_INIT (uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_return_full;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudrate = 9600;
UART = UART_OPEN (MSP_EXP430F5529LP_UARTA1、uartParams);

if (UART == NULL){
System_abort ("打开 UART 时出错");

UART_WRITE (UART、echoPrompt、sizeof (echoPrompt));

========================================================================================================================================================

执行 UART_WRITE (UART、echoPrompt、sizeof (echoPrompt))后、我的 UartAssist 不接收任何内容。

请告诉我解决这个问题!

e2e.ti.com/.../uartecho_5F00_MSP_5F00_EXP430F5529LP_5F00_TI_5F00_MSP430F5529.zip

此致、
Gilbert

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

    出于各种原因、TI-RTOS 不支持在运行时动态创建中断。 UART Hwi 在.cfg 文件中创建。 由于您将 UART1移到了数组中的第二个条目、因此您需要在.cfg 文件中更改为以下内容。

    hwiParams.arg = 1;

    halHwi.create (46、"&UARTUSCIA_hwiIntFxn"、hwiParams);

    TI-RTOS 用户指南的"TI-RTOS 针对 MSP43x 器件的 Hwi 驱动程序"部分对此进行了介绍。 我知道它非常微妙、很容易被忽略。 我们正在尝试找到更好的解决方法来解决此问题或使其更明显。

    Todd

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

    根据您的指导、我解决了这个问题。 非常感谢!

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

    您好 Todd、

    在下图中 ,“中断优先级=-1 ”的含义是什么?  此图片来自   TI-RTOS 用户指南的"TI-RTOS Driver Hwi for MSP43x Devices"部分。

    此致、

    Gilbert

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

    您能否为新问题启动新主题?

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