现象
使用stm32cubeMX配置完成freertos和touchgfx后,如果在进入到freertos前使用HAL_Delay,会造成假死状态,如下图。
此时进入到debug,可以看到SCB->ICSR的BIT23位isrpre_empt为0,指示一个挂起中断即将被激活。
原因
程序运行MX_TouchGFX_Init();时,会调用临界保护代码
taskENTER_CRITICAL();和
taskEXIT_CRITICAL();
但是在退出临界保护阶段,并没有重新开启中断,(具体原因待查)。
解决方案:
在配置完成后,立即开启中断;
portENABLE_INTERRUPTS();//