首页 > 其他 > 详细

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

时间:2019-12-12 21:16:24      阅读:591      评论:0      收藏:0      [点我收藏+]

之前一直使用标准库的,现在转到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库,对一些机制不是很清楚。之前一直认为是因为系统时钟设置的问题,没有想到在这个小小的问题上花费了一天的时间。

 

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

原文:https://www.cnblogs.com/huachunwei/p/12031326.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!