HAL_GetTick
时间: 2023-10-23 20:10:36 浏览: 356
HAL_GetTick函数是STM32 HAL库中的一个函数,用于获取系统启动以来的毫秒级计数。在while(1)循环中调用HAL_Delay()函数可能导致程序卡死的情况下,可以使用HAL_GetTick函数来替代HAL_Delay()函数实现延时功能。HAL_GetTick函数返回的数值表示自系统启动以来经过的毫秒数。
相关问题
HAL_GetTick()函数实现
HAL_GetTick()函数是HAL库提供的一个用于获取当前系统时间的函数,其实现主要基于SysTick中断。在系统初始化时,会启动SysTick定时器,并将其定时中断的时间设置为1ms。每当SysTick定时器定时中断时,SysTick_Handler()函数会被调用,同时全局变量uwTick会自增1,表示当前系统时间增加了1ms。因此,通过读取全局变量uwTick的值,就可以获取当前系统时间。
以下是HAL_GetTick()函数的实现:
```
volatile uint32_t uwTick;
void HAL_InitTick(uint32_t TickPriority)
{
// 启动SysTick定时器,并将其定时中断的时间设置为1ms
if (HAL_SYSTICK_Config(SystemCoreClock / 1000) == HAL_OK) {
// 设置SysTick定时器中断的优先级
HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0);
}
}
uint32_t HAL_GetTick(void)
{
// 获取当前系统时间
return uwTick;
}
void SysTick_Handler(void)
{
// SysTick定时器定时中断时,全局变量uwTick自增1
uwTick++;
}
```
需要注意的是,由于SysTick定时器的精度有限,可能会对获取的系统时间产生一定的误差。如果需要更高的精度,可以使用其他的定时器或者计时方法。
HAL_GetTick()函数用法
HAL_GetTick()函数是STM32 HAL库中提供的一个函数,用于获取当前系统的运行时间,单位为毫秒。
该函数的用法如下:
```c
uint32_t HAL_GetTick(void);
```
该函数返回一个32位的无符号整数,表示从系统启动开始到当前时刻经过的毫秒数。因此,可以通过调用该函数来实现延时、定时等功能。
需要注意的是,该函数的实现依赖于一个系统滴答定时器(SysTick),因此在使用该函数之前,需要确保该定时器已经被正确地初始化和启动。
此外,HAL_GetTick()函数返回的时间数值是一个循环计数器,当计数器溢出时会从零重新开始计数。因此,在计算时间间隔时,需要考虑到计数器溢出的情况。