【前言】
今天我在移植STM32U385的TouchGFX工程,在没有使用FreeRTOS时,LCD的驱动是正常的,但是配置好FreeRTOS,就卡死了,经查找发现卡死在HAL_Delay中,现将查找过程与解决方法分享如下:
【缘由】
我在TouchGFX中 ,首先是移植好LCD驱动的,也是能正常显示的,但是适配好FreeRTOS后,就不显示了,经调试发现卡死在LCD初始化上面。
经步入调试发现获取系统的Tick不到,我使用的系统滴答是TIM15的,在TIM回调函数中不进入中断:
查找TIM15的初始化,发现没有问题,那问题出现在哪里了呢?
在系统配置中,发现TIM15的中断优先级为15,因此中断得不到进入,因此问题就出在了这里,经查资料也是这样的问题。
【解决方法】
把TIM15的中断优先级调到4(FreeRTOS的中断优先级为5)
重新编译工程后,一切都正常了。
【总结】
在FreeRTOS中,需要注意中断优先级的配置,特别是在一些外设的初始化中,在HAL库中使用的超时判断是使用HAL_Tick来计时的,很容易就出现这样的问题。