初级会员
- 积分
- 122
- 金钱
- 122
- 注册时间
- 2018-9-26
- 在线时间
- 25 小时
|
发表于 2019-9-2 08:37:58
|
显示全部楼层
的确是这样的,我也碰到相同的问题,根据楼主所说的,改了一下就OK了
#define SCB_ICSR_REG (*((volatile unsigned int *)0xE000ED04))
sys_prot_t sys_arch_protect(void)
{
//vPortEnterCritical();
//return 1;
if(SCB_ICSR_REG & 0xFF)
{
return taskENTER_CRITICAL_FROM_ISR();
}
else
{
taskENTER_CRITICAL();
return 0;
}
}
void sys_arch_unprotect(sys_prot_t pval)
{
//( void ) pval;
//vPortExitCritical();
if(SCB_ICSR_REG & 0xFF)
{
taskEXIT_CRITICAL_FROM_ISR(pval);
}
else
{
taskEXIT_CRITICAL();
}
}
err_t sys_mbox_trypost(sys_mbox_t *mbox, void *msg)
{
//err_t result;
// if ( xQueueSend( *mbox, &msg, 0 ) == pdPASS )
// {
// result = ERR_OK;
// }
// else {
// // could not post, queue must be full
// result = ERR_MEM;
//
//#if SYS_STATS
// lwip_stats.sys.mbox.err++;
//#endif /* SYS_STATS */
// }
// return result;
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
if(msg==NULL)
msg= (void*)&NullMessage;
if((SCB_ICSR_REG&0xFF) == 0)
{
if(xQueueSendToBack(*mbox, &msg, 0)!= pdPASS)
return ERR_MEM;
}
else
{
if(xQueueSendToBackFromISR(*mbox, &msg, &xHigherPriorityTaskWoken)!= pdPASS)
return ERR_MEM;
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
return ERR_OK;
} |
|