打印
[牛人杂谈]

SysTick的作用你知道吗

[复制链接]
502|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小灵通2018|  楼主 | 2024-7-12 22:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SysTick(System Timer)是ARM Cortex-M系列微控制器中的一个系统定时器,用于提供一个简单的时间基准。它内置在Cortex-M内核中,因此在大多数Cortex-M系列微控制器上都可以找到。SysTick的主要作用包括以下几个方面:

1. 系统心跳计时
SysTick定时器可以用来产生周期性中断,作为系统心跳(heartbeat)计时器。这种心跳信号可以用于操作系统的任务调度,定时任务的触发,或者用来监控系统的健康状态。

2. 时间测量
SysTick可以用来测量时间间隔,例如执行某段代码所需的时间。这对于性能调试和优化是非常有用的。

3. 定时器功能
SysTick可以用作通用的定时器。你可以配置SysTick定时器产生一个中断,然后在中断处理程序中执行特定的任务。例如,你可以用它来实现软件延时,定时采样,或者周期性检查。

4. 延时函数
SysTick常用于实现精确的延时函数。通过配置SysTick的计数值和时钟源,你可以产生精确的毫秒级或微秒级延时。

5. 协助操作系统
在运行实时操作系统(RTOS)时,SysTick通常用于产生系统时钟节拍,用于任务调度。RTOS会使用SysTick中断来切换任务,并管理延时和定时功能。

SysTick的基本工作原理
SysTick包括一个24位的向下计数器,当计数器从设置的初值减到零时,会产生一个SysTick中断。计数器可以自动重新加载,从而产生周期性的中断。SysTick有三个主要寄存器:

CTRL(控制寄存器):用于控制SysTick的启停、时钟源选择、中断使能等。
LOAD(装载寄存器):用于设置计数器的初值,即定时器周期。
VAL(当前值寄存器):用于读取或写入当前计数器的值。

使用特权

评论回复
沙发
小灵通2018|  楼主 | 2024-7-12 22:55 | 只看该作者
Cortex®-M0包含一个完整的系统定时器, 系统定时器提供一个简单的、24位写入清零、递减、带灵活控制机制的自动装载计数器。该计数器可以用作实时操作系统(RTOS)的滴答定时器或作为一个简单的计数。
当系统定时器使能后,将从SysTick当前值寄存器(SYST_VAL)的值向下递减到0,并在下一个时钟周期,重新加载SysTick重加载值寄存器(SYST_LOAD)的值,然后再随时钟递减。当计数器递减到0,COUNTFLAG状态位将被设置,COUNTFLAG位读时清0。
复位时,SYST_ VAL的值是未知的。使能前,软件应向该寄存器写入值来清0。这样保证定时器会从SYST_LOAD值开始计数而不是一个随机值。
如果SYST_LOAD为0,定时器在重新加载后,将保持值为0。这种机制可以用来在定时器使能后,独立地禁用计数功能。

使用特权

评论回复
板凳
小灵通2018|  楼主 | 2024-7-12 22:55 | 只看该作者
新唐的ARM内核单片机均有这个外设,你用过吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

132

主题

1519

帖子

4

粉丝