OS_ENTER_CRITICAL()在中断子函数里的调用!!!
用的keil在调试时出现一个问题,
我在Keil的中断里调用了一个函数,
void UART0_Exception(void)//串口中断
{
OS_ENTER_CRITICAL();
if (QueueRead(&temp, UART0SendBuf) == QUEUE_OK)
//部分代码省略
VICVectAddr = 0; // 通知中断控制器中断结束
OS_EXIT_CRITICAL();
}
然后在中断子函数里又调用了
uint8 QueueRead(QUEUE_DATA_TYPE *Ret, void *Buf)
{
if (Buf != NULL) /* 队列是否有效 */
{ /* 有效 */
OS_ENTER_CRITICAL();
//部分代码省略
}
OS_EXIT_CRITICAL();
}
return err;
}
其中,QueueRead()函数居然与OS_ENTER_CRITICAL();在管理模式下的sp有重复,导致我程序老是undefin,想问一下怎么解决这个问题