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

基于STM32定时器预分频器经验分享

[复制链接]
攻城狮Melo 发布时间:2023-5-10 17:56
在STM32的定时器中,预分频器(Prescaler-PSC)用来将定时器时钟源进行分频输出。
6 W% ]8 j3 b# s3 ^
+ Y) q: u/ i8 A) u& K. q( n预分频器的值由寄存器TIMx_PSC设定,是一个16位正整数值。
3 w- f2 E7 c. v0 d2 {3 B4 P9 t& \+ e2 N' k' v, X3 x# h1 J8 |! G- G
41aab3dc70a6d2590649929f913580ac.jpg $ [$ J% ?6 N$ \# D9 O

/ S+ y9 u# C# |' N6 H: tSTM32CubeMX中的TIM预分频设置
* n' K" L, b, s1 D& N- \- \2 B: |6 M6 {1 P8 ^
在STM32系统中,定时器的时钟源为内部时钟时,其频率一般都比较高,以STM32F103的TIM1为例,其总线时钟最大为72MHz,体现在16位的定时器上的效果就是从0计数到65535上溢只需要0.9毫秒。如果我们需要更长时间的定时间隔,那么就需要预分频器对时钟进行分频处理,以降低定时器时钟(CK_CNT)的频率。
3 ~2 ^/ C, u* V7 S; e) e. n7 K, \- G' U) l" Z: S6 Q+ M8 x+ Y8 a* Z
除此之外,也可以通过配置预分频器,来获取想要的定时器时钟频率。依然以上边的TIM1为例,如果我们想获取一个精确的1ms中断,如果不分频,72MHz的时钟对应每周期1/72us,十分不利于计算。这时候使用预分频器将其72分频后为1MHz,每周期1us,1000个计时周期即为1ms,这样既便于计算,定时也更加精确。
! g" G# P% N0 D- u3 G

" R  K5 }  _6 i预分频器的工作的工作原理是,定时器时钟源每tick一次,预分频器计数器值+1,直到达到预分频器的设定值,然后再tick一次后计数器归零,同时,CNT计数器值+1。
: \+ B. a! H) [- g! t! G! x
# k3 p  x8 a. J由此可以看出,因为达到最大值后还要再tick一次才归零,所以定时器时钟频率应该为Fosc/(PSC+ 1)。其中Fosc是定时器的时钟源。比如想对时钟源进行72分频,那么预分频器的值就应该设置为71。
2 F0 Y8 j7 t; p$ |- W

/ a% p7 R3 C' e& k! R4 \8 A* m预分频器值寄存器TIMx_PSC存在影子寄存器(官方翻译为缓冲功能),所以在定时器启动后更改TIMx_PSC的值并不会立即影响当前定时器的时钟频率。要等到下一个更新事件(UEV)发生时才会生效。比如下边这张图就体现了将分频系数由1修改为2(即TIMx_PSC由0更改为1)时整个定时器的时序图。
8 L/ G6 S2 c" f  W- \6 `  D
) Z# u+ s/ I) t
c312f7a74cd9100306b4af33d5336881.jpg 0 v% h/ P1 a3 p3 L: Z

0 D& w+ i; n# s8 ?1 o% ?8 B( Q; v  @预分频器值更改时的定时器时序图) Z& |# V6 A( }: P

" V6 \% H2 D) L  y- ]& W+ }( l更新事件(UEV)则由TIMx_CR1寄存器中的UDIS位控制,在启用时,会通过以下两种方式触发:0 D% \$ a) ~2 o* k  v
?计数器上溢; n- x+ j& j9 J. P/ J8 J
?手动将 TIMx_
. }& q) ~. d- X3 I————————————————
, [2 F& @+ P, Z* U- s  q0 G3 D版权声明:华维编程猿. \+ b6 u/ o  p& ]+ Y0 X  H2 ?3 U
如有侵权请联系删除& ^. t  r' U6 N; p( A( s9 a2 Z4 V  U

& {2 n5 L; U0 T; V6 s; d
+ ?& B) W: \, _- M% h/ h
收藏 评论0 发布时间:2023-5-10 17:56

举报

0个回答

所属标签

相似技术帖

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