直接说原因吧:HAL_Delay使用的是滴答定时器,cubemx生成的工程中,它的抢占优先级默认是15——最低的,所以在其他中断回调函数中使用HAL_Delay会直接卡死。
解决方法:调高滴答定时器的抢占优先级(一定是抢占优先级!)。如下图所示,我将EXTI中断抢占优先级调到了15,滴答定时器的调到了14。这样在EXTI的中断回调函数中使用HAL_Delay就不会出问题了。
直接说原因吧:HAL_Delay使用的是滴答定时器,cubemx生成的工程中,它的抢占优先级默认是15——最低的,所以在其他中断回调函数中使用HAL_Delay会直接卡死。
解决方法:调高滴答定时器的抢占优先级(一定是抢占优先级!)。如下图所示,我将EXTI中断抢占优先级调到了15,滴答定时器的调到了14。这样在EXTI的中断回调函数中使用HAL_Delay就不会出问题了。