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

基于STM32定时计算定时器经验分享

[复制链接]
攻城狮Melo 发布时间:2023-5-1 15:08
STM32 定时器频率
% k; ^7 A2 W' h9 f
3 x! h' W) t% S/ n: j5 H& j

( J5 D& C. N$ l- D# N1 f. F& g b4cc8fedd9cc437a844c7de367a4b6ee.png
. n% ?  m( A! Z. T9 k" r) ?" g# X6 o3 ]) W: Y" c9 O4 s- V" \2 m+ t
0 f: p0 ~& S" g
定时时间 = 定时器频率 / 倍频 /装载周期
, I4 ~: ~" `! }, @: B$ }
( |" [& e8 C) x& O
" ^& u% m; q; z
  1. htim1.Init.Prescaler = 72-1;: _, a$ T! L. Y  D0 o; _
  2.   htim1.Init.CounterMode = TIM_COUNTERMODE_UP;! r7 C- B: N6 W$ L$ O+ m
  3.   htim1.Init.Period = 1*1000*1000;
    2 t- Q  d/ N- o* b% ?5 r
复制代码
5 s; {3 l; N% T% T, B: i* c5 G
tim = 72x10^6 / (72-1)/ 110001000 = 1us
, Z/ M& H2 P% A5 t2 s) L* S3 z' R1 A& n) }' @! j5 j) z4 [
  u5 `. f+ h- q- o* k
根据定时器时钟的频率,比如时钟的频率是72MHZ,可以理解为一秒钟STM32会自己数72M次,预分频系数就是将频率分割,比如分频系数是72,则该时钟的频率会变成72MHZ/72=1MHZ,但是在设置的时候要注意,数值应该是72-1。假定分频系数是72-1,那么频率变成1MHZ,也就意味着STM32在一秒钟会数1M次,即1us数一次。好了,接下来就是确定预装载值,比如需要定时1ms,由于1ms=1us*1000,那么预装载值就是1000-1;如此类推,在预分频系数确定的情况下,定时的时长就由预装载值确定了。至于要把值减一的原因,估计是计数是从0开始,所以要减一。; J( i2 Q* N: L3 G. d+ V% _
/ Q. O6 E6 Z; D0 v6 w1 a
例子3 b  s2 _7 J- S$ J0 ?, q/ J
  1. //对于71MHZ的频率,500ms中断一次,这两个参数设置如下:1 ]) r/ {* f2 x' Y5 W8 w& p  ^
  2. TIM_Prescaler=7199;   //预分频值
    ' q8 m6 r. R: y* ]7 N
  3. TIM_Period=4999;    //下一个更新事件装入活动的自动重装载寄存器周期的值
    . ~& C( c7 N( \! r( o" a

  4. 7 c$ w# m8 Z6 b0 _. g6 }
  5.    //分频7200,用72000000/7200=10000Hz
    ) i1 j/ v4 ~  _. a
  6.    //此时的周期就是1/10000=0.0001s( L: T  O: I7 e* q
  7.    //500ms=0.0001s*5000次
    6 t: Y% q9 a/ K) F. P- ^
  8.    //5000-1=4999次; P* g5 N& j: T  \  ]% R
  9.    //即通过4999次系统的运行,就是500ms
    ( x: k" d# p% @/ `( U
复制代码

* E8 V; m# ?( w' ?* d& L# h公式
: K( r2 c/ A* k, \对定时器周期公式的理解:
% n4 M. {0 [' L, \" B+ [8 Y, J7 T5 Q
  1. T=(arr+1)*(PSC+1)/Tck  2 i4 t# v2 F) p* B
复制代码
: H+ s- b! P) Y3 C9 |8 V
其中TCK为时钟频率,PSC为时钟预分频系数,arr为自动重装载值。; A( J. ~5 [! j) {
  1. f=Tck/(psc+1)*(arr+1)! V5 p8 s. O* i* y3 `2 m8 \" `
复制代码
! r7 o& I; _: g$ w- _/ W4 T* @
Tck/(psc+1)即为时钟频率,1/f为机器周期,乘以(arr+1)即可得出定时器周期。; a( z9 m/ a- z) i$ ?3 K, u
例子:TCK=72MHZ,psc=71.时钟周期=1us.(arr+1)值为多少,定时器周期就为多少毫秒。
3 q, c% X: k- _2 l————————————————! n8 B+ [- z) d9 c8 }
版权声明:静思心远
% ^7 i6 R3 p8 `  p# \1 j! Z如有侵权请联系删除
+ y+ J% `" A/ Y/ K8 g3 p- Z$ ~; y2 @) B, l$ b- M: M7 V

2 }) J$ e& [: g/ X$ Z- J2 x! d
赞 收藏 评论0 发布时间:2023-5-1 15:08

举报

0个回答

所属标签

相似技术帖

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