Thread 中讨论的其他器件:SYSBIOS
我有以下代码可 从 POSIX 队列中检索消息。
在 MQ_Retrieve 函数之后、我尝试 访问消息值、它会永远运行到包含循环的 Hwi 中
相同类型的代码位于其他项目中、并且可以正常工作。
不确定这是否是错误编码 、我缺少什么、或者是否有任何需要修复的配置。
提前感谢您的任何帮助
typedef uint16_t Signal;
enum mySignals {
START_SIG,
STOP_SIG,
};
typedef struct {
Signal sig;
} Message;
然后、我在 一个函数中包含此代码、该函数将从队列中重新接收消息
int32_t ret;
Message *m;
ret = mq_receive(queue, (char*)&m, sizeof(Message), NULL);
switch (m->sig) { // Here breaks
case START_SIG:
{
//do something
break;
}
case STOP_SIG: {
//do something
break;
}
default: {
break
}
这里是它最终的位置: 无限旋转这里
ti_sysbios_family_arm_m3_Hwi_excHandlerAsm__I:
.asmfunc
tst lr, #4 ; context on PSP?
ite NE
mrsne r0, psp ; if yes, then use PSP
moveq r0, sp ; else use MSP
mov sp, r0 ; use this stack
stmfd sp!, {r4-r11} ; save r4-r11 while we're at it
mov r0, sp ; pass sp to exception handler
mov r1, lr ; pass lr too
mov r4, lr ; preserve LR in r4
ldr r2, excHandlerAddr
blx r2
mov r0, sp ; for ROV
mov r1, r4 ; for ROV
$1
b $1 ; spin here indefinitely