打印
[牛人杂谈]

SysTick的作用你知道吗

[复制链接]
3285|57
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小灵通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内核单片机均有这个外设,你用过吗?

使用特权

评论回复
地板
dspmana| | 2024-8-12 20:57 | 只看该作者
SysTick通常用作系统滴答定时器,为操作系统提供时间基准,用于任务调度、延时和心跳时钟等功能。

使用特权

评论回复
5
班杰明| | 2024-8-12 22:10 | 只看该作者
这个怎么当做延时用啊?

使用特权

评论回复
6
xiaoyaodz| | 2024-8-12 22:35 | 只看该作者
SysTick定时器可以用来实现精确的延时。通过配置SysTick定时器的重载值和使能中断,可以在固定的时间间隔后产生中断,从而实现延时功能。

使用特权

评论回复
7
sesefadou| | 2024-8-13 00:12 | 只看该作者
在低功耗模式下,SysTick可以用来唤醒系统,确保系统能够在指定的时间点恢复运行。

使用特权

评论回复
8
averyleigh| | 2024-8-13 04:14 | 只看该作者
SysTick可以用于监控系统运行状态,例如检测任务是否按时完成,或者在系统挂起时唤醒系统。

使用特权

评论回复
9
mikewalpole| | 2024-8-13 07:29 | 只看该作者
通过配置SysTick定时器的重载值和使能中断,可以定期更新系统时间,从而实现时间的精确测量。

使用特权

评论回复
10
caigang13| | 2024-8-13 07:49 | 只看该作者
也叫系统嘀嗒时钟,产生一个时间基准,是跑OS的最小时间刻度。

使用特权

评论回复
11
1988020566| | 2024-8-13 10:21 | 只看该作者
SysTick是一个24位递减计数器,当计数值递减到0时,计数器自动重新加载预设值并继续递减。

使用特权

评论回复
12
wwppd| | 2024-8-13 12:14 | 只看该作者
SysTick可以用来实现精确的延时功能,这对于需要定时执行的操作非常重要。

使用特权

评论回复
13
yorkbarney| | 2024-8-13 16:07 | 只看该作者
通过SysTick中断,可以实现精确的延迟和延时功能,这对于需要定时执行的操作非常有用。

使用特权

评论回复
14
sheflynn| | 2024-8-13 18:06 | 只看该作者
SysTick的时钟源可以是系统时钟(通常是HCLK,即主时钟),也可以是HCLK除以8,具体取决于配置。

使用特权

评论回复
15
lzmm| | 2024-8-14 22:32 | 只看该作者
SysTick可以作为一个独立的中断源,当计数器计数到0时,会产生一个中断请求。这个中断可以用来执行周期性的任务或进行时间管理。

使用特权

评论回复
16
youtome| | 2024-8-15 10:53 | 只看该作者
SysTick定时器可以配置为周期性中断,用于实现周期性任务的调度。例如,LED闪烁、传感器数据采集等需要定期执行的任务,都可以通过SysTick中断来实现。

使用特权

评论回复
17
bestwell| | 2024-8-15 13:58 | 只看该作者
在低功耗模式下,SysTick可以用来唤醒系统,使其从休眠状态恢复到正常运行状态。

使用特权

评论回复
18
everyrobin| | 2024-8-15 17:12 | 只看该作者
Sysick定时器在嵌入式系统中扮演着重要角色,不仅为RTOS提供关键支持,还可用于延时、时间测量等操作,从而大大简化编程逻辑和提高系统的可靠性。

使用特权

评论回复
19
mollylawrence| | 2024-8-17 10:05 | 只看该作者
在操作系统中,SysTick定时器常被用作系统时钟,用于实现时间片轮转调度、定时任务、事件计数等功能。例如,在FreeRTOS等实时操作系统中,SysTick定时器用于触发任务调度。

使用特权

评论回复
20
maqianqu| | 2024-8-17 15:59 | 只看该作者
在多任务环境中,SysTick可以用来实现任务切换和时间片轮转,确保各个任务能够公平地分配处理器时间。

使用特权

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

本版积分规则

136

主题

1592

帖子

4

粉丝