STM32使用HAL库,使用延时卡死的问题。

时间:2023-03-09 18:01:58
STM32使用HAL库,使用延时卡死的问题。

之前一直使用标准库的,现在转到HAL库来后,编写了第一个程序就遇到了问题。发现我使用库里的延时程序HAL_Delay()时,会卡死在里面。

根据程序,进入到这个延时程序后 ,发现HAL_GetTick()取来的数字一直没有变化,才发现是因为

__weak uint32_t HAL_GetTick(void)
{
return uwTick;
}

  

程序中的值没有变化,搜uwTick后发现,其值由另一个程序进行处理,

__weak void HAL_IncTick(void)
{
uwTick++;
}

再搜后,竟然没有人调用此程序,所以其应该是因为中断程序没有调用此程序的原因,我找到了stm32f4xx_it.c,

其程序(我是从别的工程中拷贝过来的文件)

void SysTick_Handler(void)
{ }

竟然空空如也。

在此中加入HAL_IncTick();,并加入库文件#include "stm32f4xx_hal.h"后进行一切正常了。

#include "stm32f4xx_hal.h"

void SysTick_Handler(void)
{
HAL_IncTick();
}

因为是第一次熟悉HAL库,对一些机制不是很清楚。之前一直认为是因为系统时钟设置的问题,没有想到在这个小小的问题上花费了一天的时间。

相关文章