“滴答”定时器-ARM中标配的倒计时定时器

乐活   2025-01-31 19:39   内蒙古  

Systick定时器,是一个简单的定时器,对于CM3、CM4内核芯片,都有Systick定时器。Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。

Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。

SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。Systick中断的优先级也可以设置。

CW32

Systick就是一个定时器而已,只是它放在了NVIC中,主要的目的是为了给操作系统提供一个硬件上的中断,称之为滴答中断操作系统进行运转的时候,也会有时间节拍。

它会根据节拍来工作,把整个时间段分成很多小小的时间片,而每个任务每次只能运行一个时间片的时间长度,超时就退出给别的任务运行,这样可以确保任何一个任务都不会霸占操作系统提供的各种定时功能,都与这个滴答定时器有关。

就是这样

因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统的节拍。只要不把它在SysTick控制及状态寄存器中的使能位清除,就一直执行。

滴答(Tick)中断是一种周期性触发的定时中断,通常用于 操作系统调度、时间基准、任务切换等场景。

  1. SysTick_Config(SystemCoreClock / ticks):设置滴答频率(如 1ms)。
  2. SysTick_Handler():滴答中断服务函数(ISR)。
  3. HAL_IncTick():增加系统时间计数。

我们也可以写一个普通定时器构成的滴答定时器。

时钟打开!定时器配置成功,开始工作!

溢出的时候执行

然后先判断,用上文的知识,成功了以后记得清除标志,然后计数。



这东西就是ARM处理器里面的一个定时器,都给了。

随便找到一个M4的

RCC 通过 AHB 时钟(HCLK)8 分频后作为 Cortex 系统定时器(SysTick)的外部时钟。

通过对 SysTick 控 制与状态寄存器的设置,可选择上述时钟或 Cortex(HCLK)时钟作为 SysTick 时钟。

https://wiki.lckfb.com/zh-hans/dkx-stm32f103c8t6/beginner/systick.html
https://mcu.eetrend.com/content/2019/100044093.html

云深之无迹
纵是相见,亦如不见,潇湘泪雨,执念何苦。
 最新文章