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

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

[复制链接]
攻城狮Melo 发布时间:2023-5-10 17:56
在STM32的定时器中,预分频器(Prescaler-PSC)用来将定时器时钟源进行分频输出。
" M# g/ ]# z1 E' V0 W
0 d; a% f  y& W! g1 o! D8 \' Z预分频器的值由寄存器TIMx_PSC设定,是一个16位正整数值。
4 X6 Z/ `& Y; ~0 o: e
, V! H3 m8 X7 t7 i
41aab3dc70a6d2590649929f913580ac.jpg / W4 c& r- `0 I3 M% B8 ]4 v
/ x5 ^8 J1 I. A0 h- p4 v$ c' r
STM32CubeMX中的TIM预分频设置
- _/ V+ t. F2 Q0 B3 c' |
% [$ u; @5 ^: M; [- W5 a0 x8 p在STM32系统中,定时器的时钟源为内部时钟时,其频率一般都比较高,以STM32F103的TIM1为例,其总线时钟最大为72MHz,体现在16位的定时器上的效果就是从0计数到65535上溢只需要0.9毫秒。如果我们需要更长时间的定时间隔,那么就需要预分频器对时钟进行分频处理,以降低定时器时钟(CK_CNT)的频率。# W* X2 P8 _; C4 {: u& n0 A# K

$ z1 x1 U7 n( B" X# ^* G; T) Z! f除此之外,也可以通过配置预分频器,来获取想要的定时器时钟频率。依然以上边的TIM1为例,如果我们想获取一个精确的1ms中断,如果不分频,72MHz的时钟对应每周期1/72us,十分不利于计算。这时候使用预分频器将其72分频后为1MHz,每周期1us,1000个计时周期即为1ms,这样既便于计算,定时也更加精确。" i7 L  H3 u2 W$ }1 T% ^8 q

& y% d4 I% f) I; q" v$ W预分频器的工作的工作原理是,定时器时钟源每tick一次,预分频器计数器值+1,直到达到预分频器的设定值,然后再tick一次后计数器归零,同时,CNT计数器值+1。$ @& R2 \' ~( V1 r$ G  Z
6 H, m; }# @4 D  W% q# C
由此可以看出,因为达到最大值后还要再tick一次才归零,所以定时器时钟频率应该为Fosc/(PSC+ 1)。其中Fosc是定时器的时钟源。比如想对时钟源进行72分频,那么预分频器的值就应该设置为71。
4 F) i5 Q1 E) P- ~0 p3 m5 `+ r$ N
, `/ I; ]1 e  \% I+ s! F
预分频器值寄存器TIMx_PSC存在影子寄存器(官方翻译为缓冲功能),所以在定时器启动后更改TIMx_PSC的值并不会立即影响当前定时器的时钟频率。要等到下一个更新事件(UEV)发生时才会生效。比如下边这张图就体现了将分频系数由1修改为2(即TIMx_PSC由0更改为1)时整个定时器的时序图。
8 p! r* d# ~) K; D. T7 q% E/ z6 e
2 N( Z$ Q" Z7 Z) i2 R
c312f7a74cd9100306b4af33d5336881.jpg
* U# w/ B5 l$ s3 B% ~+ K+ a! ]
6 J% m* K. d+ W5 H预分频器值更改时的定时器时序图
/ m& ]* t9 E; i( X' k+ x  W3 g: G, N( c5 g: Z' ~+ g
更新事件(UEV)则由TIMx_CR1寄存器中的UDIS位控制,在启用时,会通过以下两种方式触发:3 r2 |  J" G% r
?计数器上溢$ [' Y) z6 K3 B8 G
?手动将 TIMx_
8 R3 G9 F7 g' `5 M7 y/ _" \! l% p& m————————————————
- T9 f  U: y: h! ^1 U& }7 e/ n版权声明:华维编程猿2 f- b+ M4 _1 ?, s6 v1 ?' {% H
如有侵权请联系删除
9 J5 L! R6 K' E: D
2 R9 Q' e# g" {0 e$ `  c! L4 S4 a2 V2 C6 _
赞 收藏 评论0 发布时间:2023-5-10 17:56

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版