stm32定时器(1)

stm32定时器基准时钟:72Mhz

周期
T = 1 f o s c = 1 72 M h z T=\frac{1}{fosc}=\frac{1}{72Mhz} T=fosc1=72Mhz1
计时时间:
t = T ∗ N t=T*N t=TN
N为计数的个数

计72个数
t 1 = 1 72 M h z ∗ 72 = 1 1 M h z = 1 u s t1=\frac{1}{72Mhz}*72=\frac{1}{1Mhz}=1us t1=72Mhz172=1Mhz1=1us
计72000个数
t 2 = 1 72 M h z ∗ 72000 = 1 1 k h z = 1 m s t2=\frac{1}{72Mhz}*72000=\frac{1}{1khz}=1ms t2=72Mhz172000=1khz1=1ms
时基单元

16位计数器(0-65535)、预分频(PSC)(使周期更大)、自动重载寄存器

在STM32微控制器中,预分频器(PSC)的设置值通常依赖于特定的定时器。对于大多数STM32定时器,预分频器是一个16位的寄存器,这意味着它的最大值是 2^16−1,即 65535。

因此,预分频器的最大设置值是 65535。这允许非常高的分频比例,从而能够实现非常长的定时周期,或者调整定时器的时钟频率以适应不同的应用需求。预分频器的作用是将输入的时钟频率降低到一个更低的频率,以便于计数器可以计数更长的时间。

对于大多数STM32定时器,预分频器是一个16位的寄存器,这意味着它的最大值是2^16-1,即 65535。
预分频器与实际与实际预分频系数之间相差1,比如0,预分频系数为1,就是72Mhz不变;1,就是2,变成36Mhz
(16 位可编程预分频器,用于将计数器时钟频率除以 1 至 65536 之间的任意因子)这样就可以达到延长计时时间的目的

STM32 定时器讲解教程,含 PWM 编码器模式

定时器加一的周期
T = 1 F s y s / ( P S C + 1 ) T=\frac{1}{Fsys/(PSC+1)} T=Fsys/(PSC+1)1
若初始值为0,计数到65535(实际上是不显示65536,但是有着一个计数周期,所以N=65536)中断那么
t = ( 65536 − t 0 ) ∗ T t=(65536-t_0)*T t=(65536t0)T
从 0 计数直到溢出(65535),它将每 0.839 秒向您发出一次中断信号。

16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时

这里写一下这里的计算公式:

以65535进行最大分频:
f = F s y s P S C m a x + 1 = 72 M 65536 = 1098.63 h z f=\frac{Fsys}{PSC_{max}+1}=\frac{72M}{65536}=1098.63hz f=PSCmax+1Fsys=6553672M=1098.63hz
计数周期:
T = 1 f = 1 1098.63 h z = 0.9102 m s T=\frac{1}{f}=\frac{1}{1098.63hz}=0.9102ms T=f1=1098.63hz1=0.9102ms
初始值为0,计数到最大65535((实际上是不显示65536,但是有着一个计数周期,所以N=65536))溢出:
t m a x = T ∗ ( a r r m a x + 1 ) = 0.9102 m s ∗ 65536 = 59.650 s t_{max}=T*(arr_{max}+1)=0.9102ms*65536=59.650s tmax=T(arrmax+1)=0.9102ms65536=59.650s
arr_{max}为最大重载值

总的公式为
t = ( P S C m a x + 1 ) ∗ ( a r r m a x + 1 ) F s y s t=\frac{(PSC_{max}+1)*(arr_{max}+1)}{Fsys} t=Fsys(PSCmax+1)(arrmax+1)
定时器模块还可以在计数器模式下运行,此时时钟源未知,它实际上是一个外部信号。可能是来自按钮,因此计数器会在按钮按下的每个上升沿或下降沿递增。

STM32 定时器详解教程计数器模式编码器

基本定时器模块

(注意到图中说明了定时器内部连接到 DAC,说明定时器可以专门用于驱动数模转换器 (DAC))

在这里插入图片描述

自动重装寄存器(ARR)

在计数器模式下,计数器从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后从 0 重新开始并生成计数器溢出事件

当计数器达到N(ARR值)时,触发溢出事件(如中断),并自动重置为0。

每次计数器溢出时都可以生成更新事件,也可以通过设置 TIMx_EGR 寄存器中的 UG 位(通过软件或使用从属模式控制器)来生成更新事件。

参考文章:STM32 Timers Tutorial | Hardware Timers Explained

(推荐这篇文章能很好理解定时器,和手册差不多)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值