前言:
而今看官们对“定时器中断实验代码”大致比较注重,同学们都需要知道一些“定时器中断实验代码”的相关知识。那么小编在网摘上汇集了一些关于“定时器中断实验代码””的相关资讯,希望各位老铁们能喜欢,同学们一起来了解一下吧!在上一篇文章中《[STM32]定时器概述》中,定时器可以被人为分为4个大部分,时钟发生器、实际模块、输入捕获、输出比较,而定时器中断实验,我们更多的在操作时钟发射器这个模块,这个应用也是定时器最基本的应用了。
时钟选择
内部时钟选择
时钟计算方法
计数器模式
向上计数模式:
时钟分频因子为1,那么:
首先,定时器需要使能,计数器的存储值就会从0开始计数,当计数到装载的值的时候,计数器就会溢出,就会产生一个更新事件,更新中断标志置位。要是使能了中断,就会执行中断服务程序,
定时器中断实验相关的寄存器
不过这些我们要是使用标准固件库来开发的话,简单的了解一下就好了,但是要是使用寄存器开发,那就需要更加详细的了解了。我一般使用的是固件库。
需要用到的库函数定时器中断的一般实现步骤示例:通过定时器中断配置,使用定时器3实现每500ms中断一次,在中断服务程序中实现某种动作。使用定时器4实现每1s中断一次,在中断服务程序中实现某种动作。
溢出时间的计算:
固件库中的APB1的预分频系数为2 所以这个定时器的时钟是72MHz
定时器时钟经过PSC预分频器之后即:CK_CNT 用来驱动计数器计数
PSC是一个16位的分频器,
记一次数的时间:ck_clk = 72M/(PSC +1)的倒数
产生一次中断的时间 = 1/(ck_clk * ARR )
那么定时时间为:(1/ck_clk) * (ARR + 1)
ARR:自动装载寄存器的值,当计数器计数达到这个值的时候就会有中断溢出
PSC:时钟预分频数
一个简单的计算方法:(PSC+1)/ck_clk 其实就是一个时间周期的时间长度,在乘以ARR + 1这个为计时的长度,那这样就是总的计数时间了。
ck_clk = 72M (固定的)
假如:PSC = 7199 ,PSC+1 = 72000
(PSC+1)/ck_clk = 0.1ms
那你要定时500ms 那么就需要ARR + 1 = 5000,那么ARR = 4999
源码
喜欢我文章的朋友,欢迎关注、点赞、评论、交流。版权个人所有,转载请注明出处。
标签: #定时器中断实验代码