HAL_Delay导致程序卡死
简介:最近在调STM32HAL库按键中断,用到了延时消抖,但是一按键程序就会卡住,通过增加printf打印调试,发现程序卡在了HAL_Delay上,一搜索,发现你大家都遇到了这种问题,主要是由于SysTick_IRQn的中断优先级太低,系统终端比较高,导致其卡死,目前给出两种解决方法。
方法1
在HAL_StatusTypeDef HAL_Init(void)
中的HAL_InitTick(TICK_INT_PRIORITY);
后增加一行,HAL_NVIC_SetPriority(SysTick_IRQn,0,0);
将SysTick_IRQn的抢占优先级和响应优先级设置为最高。
方法2
点击HAL_StatusTypeDef HAL_Init(void)
中的HAL_InitTick(TICK_INT_PRIORITY);
中的TICK_INT_PRIORITY
中的定义,应该在stm32f1xx_hal_conf.h
中,将TICK_INT_PRIORITY的值由15U改成0U
问题解决