stm32之Cortex系统定时器(SysTick)

SysTick时钟,俗称“嘀嗒定时器”,它能按设定的时间产生一次中断。控制工程代码中随处可见形如delay_ms()之函数。但是一直不清楚其内在机制。今天花时间研究了一下。

首先还是在数据手册上看一下SysTick寄存器的配置,如图:
这里写图片描述

寄存器说明

这里写图片描述
这里写图片描述
stm32的时钟源
选择外部时钟源时,则Systick时钟为HCLK /8
选择内核时钟源时,则Systick时钟为HCLK

延时编程原理
systick定时器是24位的递减计数器,设定初值并使能它后,它会把每个系统时钟周期计数器减1,
计数到0 时,将从RELOAD 寄存器中自动重装载定时器初值。只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息.

延时编程步骤
1.计算出产生1us 需要多少个时钟周期 fac_us
2.计算出RELOAD寄存器的值
也就是产生相应延时所需要的时钟周期数
RELOAD=fac_us * nus
3.开启计数
4.循环检测计数到0的标志位
5.清空计数器,关闭定时器

SysTick异常配置步骤
1对CTRL/LOAD/VAL三个寄存器进行配置
2初始化SysTick使用的时钟
3清除系统当前值,装入重装值
4使能SysTick,使

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值