滴答定时器
2025/9/8大约 3 分钟
滴答
什么是滴答(Tick)?
滴答(Tick) 是指计算机或嵌入式系统中,系统时钟每次跳动或计时的一个基本单位。它通常表示一个固定的时间间隔。这个时间间隔可能是微秒、毫秒或更短的时间,具体取决于系统的时钟频率。
1. 滴答的作用
滴答通常用于控制系统的定时任务、调度任务以及产生精确的时间流逝。例如:
- 操作系统通过滴答来分配 CPU 时间给不同的进程(即时间片轮转调度)。
- 用于驱动实时任务,确保系统能够按照设定的节奏运行。
2. 滴答的来源
滴答的频率通常由系统时钟或定时器提供,系统的时钟会按照固定的频率产生滴答信号。例如:
- 如果系统时钟的频率为 1 MHz(每秒百万次),那么每个滴答的时间间隔是 1 微秒。
- 在一些嵌入式系统中,滴答的频率可能是几十赫兹到几千赫兹。
3. 滴答的作用举例
- 操作系统调度:在操作系统中,滴答通常用来触发时钟中断,操作系统可以根据滴答来分配不同进程的运行时间。例如,每 10 毫秒触发一次滴答,中断会通知操作系统进行任务切换。
- 计时器:一些设备或程序用滴答来跟踪时间。例如,数字时钟会根据滴答信号更新显示时间。
4. 滴答与看门狗的关系
在一些嵌入式系统中,滴答与看门狗机制有关系:
- 看门狗定时器通常依赖滴答信号来倒计时。如果在规定的滴答时间内没有被“喂”给看门狗(即没有重置定时器),看门狗会认为系统发生了错误或死锁,进而触发复位。
通俗比喻
滴答就像你家钟表的“滴答”声音,每一声都是时间的一个小步伐,标志着系统时间的流逝。系统通过这些“滴答”来安排各项任务,并确保一切按时执行。
深入SysTick计数器和HAL_Delay
SysTick —系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复,uwTick加一
因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。

HAL_GetTick()返回的是uwTick,调用HAL_Delay()函数本质上是sysTick中断
所以在中断回调中要避免用HAL_Delay()这个阻塞延时,一旦sysTick的抢占优先级不够高,在中断回调函数中CPU就不会中断处理uwTick———–>HAL_GetTick()返回的uwTick都是一样的,轮询条件一直为真,导致阻塞

