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庫,對一些機制不是很清楚。之前一直認為是因為系統時鍾設置的問題,沒有想到在這個小小的問題上花費了一天的時間。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM