您好!
我将使用 tirtos7在任务之间进行通信。 我遵循了本教程: https://dev.ti.com/tirex/explore/node?node=A__ATOcjUy6zyynCMWH-Ys6Ng__com.ti.SIMPLELINK_ACADEMY_CC13XX_CC26XX_SDK__AfkT0vQ__LATEST&search=queues
我可以编译和闪存而不会出现 任何问题、但当我到达 mq_receive 或 mq_send 时、不会出现任何情况。 如果我停止程序,我看到它卡在 Error_raiseX()中,特别是在这个错误中:
如果(Error_policy_D == Error_spin){
for (;;){
}
}
你有任何线索,我可能是错的?
消息队列初始化:
mqAttrs.mq_maxmsg = MSG_NUM;
mqAttrs.mq_msgsize = MSG_SIZE;
mqAttrs.mq_flags = 0;
mqdes = mq_open ("alarm", O_RDWR | O_CREAT,
0664, &mqAttrs);
if (mqdes == (mqd_t)-1) {
/* mq_open() failed */
while (1);
}
/* Construct writer/reader Task threads */
Task_Params_init(&taskParams);
taskParams.stackSize = TASKSTACKSIZE;
taskParams.stack = &task1Stack;
taskParams.priority = 2;
Task_construct(&task1Struct, (Task_FuncPtr)mainTask, &taskParams, (void *)&mqdes);
taskParams.stack = &task2Stack;
taskParams.priority = 1;
Task_construct(&task2Struct, (Task_FuncPtr)task1Fxn, &taskParams, (void *)&mqdes);
维护任务:
mqd_t* mqdes = arg0; int msg = 5; mq_send(*mqdes , (char *)&msg, sizeof(msg), 0);
任务1Fxn:
mqd_t *mqdes = arg0;
int msg;
while (1)
{
while (mq_receive(*mqdes, (char *)&msg, sizeof(msg), NULL) != -1) {
GPIO_toggle(CONFIG_GPIO_LED_0);
}
}