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

STM32学习笔记04—SysTick时钟

[复制链接]
STMCU 发布时间:2020-10-27 14:27
STM32学习笔记04—SysTick时钟


4.1 SysTick概述
       Cortex-M3内核的处理器,内部包含了一个SysTick定时器,SysTick是一个24位的倒计数定时器,当计数到0时,将从ReLoad寄存器中自动重装载定时初值,开始新一轮计数。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。


       SysTick定时器能产生中断,CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间对其处理都是相同的。


       我们在程序中使用SysTick时钟来作为延时函数,这样就不会占用定时器资源,SysTick时钟是一个直接挂载在AHB总线上的一个定时器,输入的时钟频率直接就是AHB总线上的时钟频率,使用SysTick定时器进行延时,可以精确的设置延时时间,与之前51单片机的for循环累加的精度是完全不一样的。


4.2 相关寄存器
4.2.1 控制及状态寄存器CTRL
1.png
Bit 16:计数状态(只读)
       0:该位数据已经被读走
       1:上次读取到该位的数据后,计数值达到了0
Bit 2:时钟源选择
       0:外部时钟源
       1:内核时钟
Bit 1:中断标志位
       0:计数到0不产生中断
       1:计数到0产生SysTick中断
Bit 0:定时器使能位
       0:关闭定时器
       1:开启定时器

4.2.2 重装载数值寄存器LOAD
2.png
ReLoad[23:0]:当计数到0后,该寄存器的数据自动更新到VAL中。



4.2.3 当前数值寄存器VAL
3.png
VAL[23:0]:读取时返回当前倒计数的值,写它:清零,同时还会清除在SysTick控制及状态寄存器中的flag标志。



4.2.4 校准值寄存器CALIB


Bit 31:外部参考时钟可用标志
       0:外部参考时钟可用
       1:外部参考时钟不可用


Bit 30:校准值10ms标志
       0:校准是准确的10ms
       1:校准不是准确的10ms


Bit 23~Bit 0:10ms的时间内倒计数的格数。若该值读回零,则表示无法使用校准功能


4.3 SysTick驱动函数
4.3.1 创建目录
(1)在SYSTEM目录下创建delay文件夹,并创建delay.c和delay.h文件。如下图所示。
4.png
(2)将delay.c添加进工程,delay.h添加进程序。
5.png
(3)在delay.h文件中输入如下内容。
6.png
(4)底层寄存器文件添加寄存器组
7.png
(5)底层寄存器文件添加基础地址
8.png
4.3.2 初始化

    这里首先选择外部时钟源,由于系统时钟72MHz,并且SYSTICK时钟固定位系统时钟的1/8,所以1us的计数脉冲实际是72/8,也就是9个脉冲才是1us,这个1us的脉冲数就是基础时钟。


4.3.3 us级别延时函数
9.png

4.3.4 ms级别延时函数
10.png
上一篇:
STM32学习笔记03—中断架构

1 收藏 评论0 发布时间:2020-10-27 14:27

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

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