打印
[综合信息]

华大MCU SysTick 定时器简介

[复制链接]
1486|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LED2013|  楼主 | 2020-8-7 09:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

SysTick 定时器简介

OS 要想支持多任务,就需要周期执行上下文切换,这样就需要有定时器之类的硬件资源打断程序执行。当定时器中断产生时,处理器就会在异常处理中进行 OS 任务调度,同时还会进行 OS 维护的工作。Cortex-M0 处理器中有一个称为 SysTick 的简单定时器,用于产生周期性的中断请求。SysTick 为 24 位的定时器,并且向下计数。定时器的计数减到 0 后,就会重新装载一个可编程的数值,并且同时产生 SysTick 异常(异常编号为 15),该异常事件会引起SysTick 异常处理的执行,这个过程是 OS 的一部分。对于不需要 OS 的系统,SysTick 定时器也可以用作其他用途,比如定时、计时或者为需要周期执行的任务提供中断源。SysTick 异常的产生是可控的,如果异常被禁止,仍然可以用轮询的方法使用SysTick定时器,比如检查当前的计数值或者轮询溢出标志。
设置 SysTick
由于 SysTick 定时器的重载值和当前值在复位时都是未定义的,为了防止产生异常结果,对 SysTick 的配置需要遵循一定的流程:
Step1:配置 SysTick->CTRL. ENABLE 为 0,禁止 SysTick。
Step2:配置 SysTick->CTRL. CLKSOURCE,选择 SysTick 的时钟源。
Step3:配置 SysTick->LOAD,选择 SysTick 的溢出周期。
Step4:向 SysTick->VAL 写入任意值,清零 SysTick->VAL 及 SysTick->CTRL.COUNTFLAG。
Step5:配置 SysTick->CTRL. TICKINT 为 1,使能 SysTick 中断。
Step6:配置 SysTick->CTRL. ENABLE 为 1,使能 SysTick。
Step7:在中断服务程序中读取 SysTick->CTRL 以清除溢出标志。

注:Systick 溢出周期为 SysTick->LOAD+1,配置示例如下:
时钟源 SysTick->LOAD 溢出周期
RCH 4M 3999 1ms


使用特权

评论回复
沙发
磨砂| | 2020-9-4 12:58 | 只看该作者
楼主辛苦了

使用特权

评论回复
板凳
晓伍| | 2020-9-4 12:59 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
地板
八层楼| | 2020-9-4 13:03 | 只看该作者
道理都是一样的

使用特权

评论回复
5
观海| | 2020-9-4 13:04 | 只看该作者
不错的帖子哦

使用特权

评论回复
6
guanjiaer| | 2020-9-4 13:13 | 只看该作者
步骤很清晰

使用特权

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

本版积分规则

2341

主题

29289

帖子

24

粉丝