HAL_GetTick
和HAL_SYSTICK_Config
是在使用 HAL 库(如 STM32 HAL 库)进行嵌入式系统开发时与系统滴答定时器相关的两个函数,它们之间存在着紧密的联系
功能及作用
-
HAL_SYSTICK_Config()
:这是一个用于配置系统滴答定时器(SysTick)的函数。SysTick 是一个 24 位的递减计数器,它可以产生周期性的中断,为系统提供一个基本的时间基准。HAL_SYSTICK_Config()
函数主要用于设置 SysTick 定时器的时钟源、重载值等参数,从而确定 SysTick 定时器的计数频率和中断周期,进而为整个系统的时间管理和任务调度等提供基础。 -
HAL_GetTick()
:一般来说,hal_gettick()
函数用于获取系统滴答定时器从启动以来的计数值,该计数值会随着时间的推移不断增加,通过读取这个计数值,用户可以获取系统已经运行的时间信息,常用于实现软件定时、延时、时间戳等功能。
/@param TicksNumb: Specifies the ticks Number of ticks between two interrupts. uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) { return SysTick_Config(TicksNumb); } HAL_SYSTICK_Config(170000000 / 1000); //SystemCoreClock = 170000000次/每秒 //reload register = 170000000 / 1000 = 170000
由* @param TicksNumb: Specifies the ticks Number of ticks between two interrupts.可知:
TicksNumb是SysTick定时器的滴答数(ticks)在两次中断之间计数的次数,即自动重装载寄存器内部存的值,每次SysTick递减至零后再装载。
SysTick定时器减1所用的时间 (s)
所以当重装载数值为170000时,产生一次中断信号的时间就为:
因此HAL_SYSTICK_Config()的括号内部填入170 000 000 / 1 000 。
HAL_GetTick()
函数返回的系统滴答计数通常是每毫秒增加1 。
若加入判断,可实现每秒去做你想让它做的事情