TI中文支持网
TI专业的中文技术问题搜集分享网站

cc1310 + TI15.4 collector例程 串口问题

TI大神,您好!

使用TI15.4  collector例程进行串口数据传输时出现,MAIN_ASSERT_HWI_TIRTOS错误。

硬件情况:

采用TI官方LAUNCHXL_PAD,能够正确执行uartecho例程。

软件配置:

(与uartecho例程相同,默认阻塞方式)

uartParams.baudRate = 115200;uartParams.writeDataMode = UART_DATA_BINARY;uartParams.readDataMode = UART_DATA_BINARY;uartParams.readReturnMode = UART_RETURN_FULL;uartParams.readEcho = UART_ECHO_OFF;

在执行

UART_read(uartHandle, &input, 1)

中报错

单步进入   UARTCC26XX_read,执行:

/* Pend on semaphore and wait for Hwi to finish. */if (SemaphoreP_OK != SemaphoreP_pend(&(object->readSem),object->readTimeout)) {

后进入

ti_sysbios_knl_Semaphore_pend__E:
1001a000: E92D41F0 push.w {r4, r5, r6, r7, r8, lr}
1001a004: 460E mov r6, r1

进入:

          ti_sysbios_knl_Task_blockI__E

后就出现上述错误。

请TI大神指导!!!

Alvin Chen:

首先你要注释掉预编译的display uart 那个选项,如图像lcd display 那样打个x让他不能生效。

Alvin Chen:

回复 Alvin Chen:

其次建议用callback的模式去做。

user5153918:

回复 Alvin Chen:

更改成callback模式后,可以正常写,但是读还是同样的问题。

Alvin Chen:

回复 user5153918:

void Uart_WriteCallback(UART_Handle handle, void *txBuf, size_t size);
void Uart_ReadCallback(UART_Handle handle, void *rxBuf, size_t size);void Uart_ReadCallback(UART_Handle handle, void *rxBuf, size_t size)
{UART_read(handle, Uart_RxTempBuf, 200);}void Uart_WriteCallback(UART_Handle handle, void *txBuf, size_t size)
{}void HwUARTInit(void)
{UART_init();UART_Params_init(&UARTparams);UARTparams.baudRate = 115200;UARTparams.dataLength = UART_LEN_8;UARTparams.stopBits = UART_STOP_ONE;UARTparams.readDataMode = UART_DATA_BINARY;UARTparams.writeDataMode = UART_DATA_TEXT;UARTparams.readMode = UART_MODE_CALLBACK;UARTparams.writeMode = UART_MODE_CALLBACK;UARTparams.readEcho = UART_ECHO_OFF;UARTparams.readReturnMode = UART_RETURN_NEWLINE;UARTparams.readCallback = Uart_ReadCallback;UARTparams.writeCallback = Uart_WriteCallback;UARTHandle = UART_open(Board_UART0, &UARTparams);UART_control(UARTHandle, UARTCC26XX_RETURN_PARTIAL_ENABLE,NULL);}

参考一下上面的程序

user5153918:

回复 Alvin Chen:

已经注释掉-DxBOARD_DISPLAY_USE_UART,但是问题依旧,阻塞和callback模式都会报错,问题应该不是这,还有没有其他的可能性?

Alvin Chen:

回复 user5153918:

你怎么改的?你可以把我贴的程序把HwUARTInit放在你的collector初始化即可。

user5153918:

回复 Alvin Chen:

我分析了一下代码,这个问题是否和macTask有关系?我看Collector任务初始化中要向macTask注册一些信息。

user5153918:

回复 Alvin Chen:

我另外起了个任务。。。。

Alvin Chen:

回复 user5153918:

 这可能是task 抢占的问题,如果不是必要请采纳我的建议在collector这个task里面使用

user4203015:

回复 Alvin Chen:

UART_read(UART_Handle handle, void *buffer, size_t size)的注释中有这句话

* @warning Do not call %UART_read() from its own callback function when in * #UART_MODE_CALLBACK.

意思是不要在自己的回调函数中使用UART_read吗?

赞(0)
未经允许不得转载:TI中文支持网 » cc1310 + TI15.4 collector例程 串口问题
分享到: 更多 (0)