HAL_InitTick()和HAL_IncTick()有什么区别?
时间: 2024-10-20 15:09:06 浏览: 33
STM32F1xx_HAL_Driver_HAL库stm32_memo_stm32hal_
5星 · 资源好评率100%
`HAL_InitTick()` 和 `HAL_IncTick()` 是STM32Cube库中与System Clock Timer(SysTick)相关的两个函数,它们在嵌入式实时操作系统(RTOS)初始化和时间管理中扮演重要角色。
`HAL_InitTick()` 函数主要用于初始化SysTick定时器,它设置了SysTick的中断周期和优先级。该函数的主要目的是配置定时器以产生大约每1毫秒一次的中断,这对于实现RTOS的时间片轮转和其他定时任务非常重要。参数`TickPriority`用于设置SysTick中断的优先级,这影响到中断响应的顺序。
引用[2]:
```c
__weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
{
// ...
if (HAL_SYSTICK_Config(SystemCoreClock / (1000U / uwTickFreq)) > 0U)
{
return HAL_ERROR;
}
// ...
}
```
相比之下,`HAL_IncTick()` 函数用于简单地递增系统计数器,通常表示进程执行的时间。每当一个进程完成其时间片或有其他需要更新时间戳的地方,这个函数就会增加计数器的值,这样RTOS调度器可以依据此来调整下一次调度的时间点。这个操作本身不涉及中断。
总结来说,`HAL_InitTick()` 设置定时器基础和中断优先级,而 `HAL_IncTick()` 只是用来维护时间流逝记录的辅助功能。
阅读全文