工具/软件:TI-RTOS
我正在尝试按预期使用 uart0、并添加使用 uartA3、P6.0、6.1与另一个处理器进行通信。 我搜索了这个论坛、找到了一个在附加 UART 中添加的另一个处理器的示例。 esxample 很旧,有些调整必须疯狂。 我执行了这些操作、发现 uartA0仍然有效、但 uartA3则不起作用。 这个错误似乎是一个在无政府状态中某个地方的非固定变量。 为了简化操作、我尝试将 uartecho 示例从 UARTA 转换为 UART A3。 当我执行此操作时、在程序加载时收到一条消息、指出"received exception from ROV server: target memory read failed at address 0xffffffff length 128。 根据应用程序映射、此读取无效。 应用程序可能未初始化或已损坏。"
我相信我在转换中错过了一些东西,但却找不到。
我使用的是 CCSV7和 tirtos_msp43x_2_20_00_06。 所有更改都是对基本 uartecho 示例进行的,该示例确实起作用。
我所做的更改如下。 任何帮助都将得到显著改善。 谢谢
msp430fr5994.h
#ifdef __ASM_HEADER__/* begin #defines for assembler */
#define EUSCI_A3_Vector ".int24"/* 0xFFC0 */
其他
#define EUSCI_A3_Vector (24 * 1U)/* 0xFFC0 */
#endif
#ifdef __ASM_HEADER__/* begin #defines for assembler */
#define EUSCI_A0_Vector ".int48"/* 0xFFF0 */
其他
#define EUSCI_A0_Vector (48 * 1U)/* 0xFFF0 */
#endif
Board.h
#define Board_UART3 MSP_EXP430FR5994_UARTA3
uartechoA3B.c
/*创建一个数据处理关闭的 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 (Board_UART3、uartParams);
uartechoA3B.cfg
var hwiParams = new halHwi.Params();
hwiParams.arg = 0;
halHwi.create (24、"&UARTEUSCIA_hwiIntFxn"、hwiParams);
MSP_EXP430FR5994.c
/*
*========================================= UART ========================================================
*
/*放入子段以允许 TI 链接器正确删除项目*/
#if defined (__TI_Compiler_version__)
#pragma DATA_SECTION (UART_CONFIG、".CONST:UART_CONFIG")
#pragma DATA_SECTION (uartEUSCIADWAttrs、".const:uartEUSCIADWAttrs")
#endif
#include
#include
UARTEUSCIA_Object uartEUSCIAObjects[MSP_EXP430FR5994_UARTCOUNT];
/*
*波特率分频器是使用 MSP430波特率确定的
*计算器
* software-dl.ti.com/.../index.html
*
CONST UARTEUSCI_BAURATEConfig uartEUSCIABAUDRATE[]={
/*{波特率、输入时钟、预分频器、UCBRFx、UCBRSx、 过采样}*/
{
.outputBudrate = 115200、
.inputClockFreq = 80000、
.prescalar = 4、
hwRegUCBRFx = 5、
hwRegUCBRSx = 85、
过采样= 1.
}、
{9600、80000、52、1、0、 1}、
{9600、32768、3、0、3、 0}、
};
CONST UARTEUSCI_HWAttrs uartEUSCIAHWAttrs[MSP_EXP430FR5994_UARTCOUNT]={
{
baseAddr = EUSCI_A3_base、
时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、
.bitOrder = EUSCI_A_UART_LSB_FIRST、
numBudrateEndries = sizeof (uartEUSCIABAURATEes)/sizeof (UARTEUSCIA_BAUDRAateConfig)、
.budrateLUT = uartEUSCIA波特 率
}、
};
const UART_Config UART_config[]={
{
.fxnTablePtr =&UARTEUSCIA_fxnTable、
.object = uartEUSCIAObjects[0]、
.hwAttrs = uartEUSCIADHWAttrs[0]
}、
{NULL、NULL、NULL}
};
/*
*==== MSP_EXP430FR5994_initUART ===
*
void MSP_EXP430FR5994_initUART (void)
{
/* P6.0、1 = EUSCI_A3 TXD/RXD *
GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P6、
GPIO_PIN0、GPIO_secondary 模块功能);
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P6、
GPIO_PIN1、GPIO_secondary 模块功能);
/*初始化 UART 驱动程序*/
UART_INIT();
}
MSP_EXP430FR5994.h
typedef enum MSP_EXP430FR5994_UARTName{
MSP_EXP430FR5994_UARTA3 = 0、
MSP_EXP430FR5994_UARTCOUNT
}MSP_EXP430FR5994_UARTName;