HAL_GetTick()函数实现
时间: 2023-07-30 08:09:09 浏览: 498
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定时器的精度有限,可能会对获取的系统时间产生一定的误差。如果需要更高的精度,可以使用其他的定时器或者计时方法。
阅读全文