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.
工具/软件:TI-RTOS
将 CCS 6.1.3和 TI-RTOS 用于带有5529 Launchpad 的 MSP43x 2.20.0.06。
在 Booster Pack 连接图中、引脚3.4和3.3分别标记为"UART RX"和"UART TX"。 我尝试使这些引脚作为 UART 与另一个微控制器进行通信、同时使用标准 UART 通过 USB 连接与 Launchpad 进行通信。 我还想使用 TI-RTOS 功能、因为我在低级微处理器编程方面没有太多经验。
我查看了论坛问题 e2e.ti.com/.../421987 并尝试将其用作模型。 论坛问题中的代码看起来与我的*5529.c 和*5529.h 中的代码不完全相同,但我尝试做一些类似的事情。 我还查看 了 e2e.ti.com/.../581883 、但无法确定如何使其适用。 5529.c 中的代码是不同的,如果我将论坛问题中的代码粘贴到该代码中,则不会进行编译。
以下是我对*5529.c 和*5529.h 文件所做的更改:
CONST UARTUSCI_HWAttrs uartUSCIAHWAttrs[MSP_EXP430F5529LP_UARTCOUNT]={
{
baseAddr = USCI_A1_base、
时钟源= USCI_A_UART_CLOCKSOURCE_SMCLK、
.bitOrder = USCI_A_UART_LSB_FIRST、
numBudrateEndries = sizeof (uartUSCIABAURATS)/sizeof (UARTUSCIA_BAUDRAateConfig)、
.budrateLUT = uartUSCIA波特 率
}、
{
baseAddr = USCI_A0_BASE、
时钟源= USCI_A_UART_CLOCKSOURCE_SMCLK、
.bitOrder = USCI_A_UART_LSB_FIRST、
numBudrateEndries = sizeof (uartUSCIABAURATS)/sizeof (UARTUSCIA_BAUDRAateConfig)、
.budrateLUT = uartUSCIA波特 率
}、// JDL 第二个 UART 请参见 e2e.ti.com/.../421987 */
};
const UART_Config UART_CONFIG[]={
{
.fxnTablePtr =&UARTUSCIA_fxnTable、
.object = uartUSCIAObjects[0]、
.hwAttrs = uartUSCIAHWAttrs[0]
}、
{
.fxnTablePtr =&UARTUSCIA_fxnTable、
.object = uartUSCIAObjects[1]、
.hwAttrs = uartUSCIAHWAttrs [1]
},/* JDL 第二个 UART 参见 e2e.ti.com/.../421987 */
{NULL、NULL、NULL}
};
这里(这是看起来与其他问题不同的部分):
void MSP_EXP430F5529LP_initUART (void)
{
/* P4.4、5 = USCI_A1 TXD/RXD *
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P4、
GPIO_PIN4 | GPIO_PIN5);
/* P3.3、4 = USCI_A0 TXD/RXD *
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、
GPIO_PIN3 | GPIO_PIN4);
/* JDL 第二个 UART 参见 e2e.ti.com/.../421987 */
/*初始化 UART 驱动程序*/
UART_init();
}
在* 5529.h 中:
typedef 枚举 MSP_EXP430F5529LP_UARTName{ MSP_EXP430F5529LP_UARTA1 = 0、 MSP_EXP430F5529LP_UARTA0 = 1、/* JDL 第2个 UART * MSP_EXP430F5529LP_UARTCOUNT }MSP_EXP430F5529LP_UARTName;
在 Board.h 中:
#define Board_UART0 MSP_EXP430F5529LP_UARTA1
#define Board_UART1 MSP_EXP430F5529LP_UARTA0/* JDL 第2个 UART e2e.ti.com/.../
我确信我做的事情是极其错误的、或者错过了某个地方的逗号。
当我运行我的代码时(如下所示)、Board_UART0会打开并正常工作、但 Board_UART1返回一个空指针。
UART_PARAMS_INIT (uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_return_NEWLINE;//字符串被读取,直到到达换行符
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudrate = 9600;
uartPC = UART_OPEN (Board_UART0、uartParams);
uartParams.baudrate = 38400;//至集电极板
uartCB = UART_OPEN (Board_UART1、uartParams);
我附加了我的项目(我希望它能像我期望的那样工作)。 有关如何让第二个 UART 在 TI-RTOS 中工作的任何线索?
您好、Joel、
我看了你的代码、似乎你忘记了为新的 UART 实例创建硬件中断(Hwi)。 您需要将以下内容添加到*。cfg 文件中(在第一个 UART 的 Hwi 之后):
hwiParams.arg = 1; halHwi.create (56、"&UARTUSCIA_hwiIntFxn"、hwiParams);
最棒的
伊曼纽尔
有道理。 不过、我将从 UART_OPEN (Board_UART1、&uartParams)获取 NULL。