请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:LAUNCHXL-CC2650 Thread 中讨论的其他器件:CC2650
工具/软件:TI-RTOS
我有一个修改后的 SimpleBLEperipheral 项目工作版本、该版本在启用通知后通过 BLE 向对等器件发送数据。
我正在尝试添加另一个任务、即通过 UART 读取数据(来自另一个 cc2650、但现在我将通过 Putty 手动键入字符)。
这两个任务之间没有逻辑相关性、一个任务通过 BLE 进行通信、另一个任务仅从 UART 读取。
这两个任务中的每一个任务都能完美地单独运行、但当我创建其中的两个任务时、BLE 任务仅起作用。
具体而言、执行会进入信标挂起(请参阅下文)、但永远不会调用 UART 读取回调函数。
首先、当我创建这两个任务时、它们都不会运行、当我增大 BLE 任务堆栈大小时、它就可以正常运行。 但是、这种"技巧"对 UART 任务不起作用。
有什么关于如何调试它的想法吗? 或者、这种行为的原因可能是什么?
以下是 UART 代码。
非常感谢!
void UART_taskFxn (UARg arg0、UARg arg1) { //初始化应用 程序 UART_task_init (); UART_Params uartParams; measuration_t* meaPtr; /*创建一个数据处理关闭的 UART。 * UART_PARAMS_INIT (uartParams); uartParams.writeDataMode = UART_DATA_BINARY; uartParams.readDataMode = UART_DATA_BINARY; uartParams.readReturnMode = UART_return_full; uartParams.readMode = UART_MODE_CALLACK; uartParams.readCallback = uartReadCallback; uartParams.readEcho = UART_ECHO_OFF; uartParams.baudrate = 115200; UART = UART_open (Board_UART0、&uartParams); UART_read (UART、&rxMsg、measuration_LEN_bytes); while (1) { semaphore_pend (semHandle、BIOS_wait_forever); while (!Queue_empty (measureQueueHandle)) { mePtr = Queue_dequeue (measureQueueHandle); free (mePTr); //需要在此处添加代码... } } 静态 void uartReadCallback (UART_Handle handle、void * buf、size_t count) { measurement_t * measurementPtr =(measurement_t *) malloc (sizeof (measurement_t))); strncpy (measurementPtr -> data、buf、count); Queue_enqueue (measureQueueHandle、&measurementPtr ->_elem); Semaphore_post (semHandle); PIN_setOutputValue (ledPinHandle、Board_LED1、!PIN_getOutputValue (Board_LED1)); UART_READ (UART、 &rxMsg、measure_LEN_bytes); }