你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

嵌入式学习—系统定时器systick

[复制链接]
STMCU小助手 发布时间:2022-12-14 13:20
SysTick定时器又称为系统嘀嗒定时器,ARM-M系列内核的MCU都包含这个定时器,使用内核的SysTick定时器来实现延时,可以不占用系统定时器,节约资源。它是在MCU内核中实现的,与MCU外设无关,它的代码可以在不同的MCU之间移植。
SysTick是一个24位递减定时器,涉及到的寄存器主要有4个,控制和状态寄存器,重装载值寄存器,当前值寄存器,校准寄存器,即计数器可以从最大值224开始,最多,每个时钟周期减1,当减到0时,产生SysTick异常,同时再自动重载定时器初值,开始新一轮计数。通过设置初值,就可以得到期望时间。如图所示,y为定时器初值,随着时间增加,y值逐渐减小,直至为零,再重新加载初值,如此往复,得到x1,x2,x3这些时间段,就是我们延时的时间。
640.jpg



举个例子,stm32f407的工作频率为164MHz,意味着1s时间内,会计数168000000次,那么1ms计数168000次,168000这个数字可以作为systick计数器的初值。把这个值写入系统定时器,定时器在每个时钟周期减1,同时产生中断通知,再次加载168000,如此反复。

-------------------------------------------------------------------------

系统定时器的控制寄存器比较少,整体比较简单,包括STK_CTRL,STK_LOAD,STK_VAL,STK_CALIB四个寄存器,因为系统嘀嗒定时器属于内核的外设,相关寄存器在内核编程手册中,不在STM32F4xx的参考手册中。

系统嘀嗒定时器控制和状态寄存器STK_CTRL

1.png

重点关注
bit[0]用于使能系统嘀嗒定时器。
bit[1]使能系统嘀嗒定时器中断。
bit[2]设置系统嘀嗒定时器的时钟来源。
----------------------------------------------------------------------------
系统嘀嗒定时器加载值寄存器STK_LOAD

2.png

bit[23:0]一共24位,用来设置系统嘀嗒定时器的初值,范围为1~16777216
----------------------------------------------------------------------------
系统嘀嗒定时器当前值寄存器STK_VAL
3.png
bit[23:0]一共24位,用来获取当前系统嘀嗒定时器的计数器的值。
----------------------------------------------------------------------------
系统嘀嗒定时器校准寄存器STK_CALIB
4.png
这个寄存器暂时没有用到,暂时不用深究。
----------------------------------------------------------------------------
下图是SysTick的功能框图。
5.png

转载自:diandianmo


收藏 评论0 发布时间:2022-12-14 13:20

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版