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

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

[复制链接]
攻城狮Melo 发布时间:2023-5-1 15:08
STM32 定时器频率+ k, T5 A: u, F- n6 Q

. [& }) J" w& O  i1 i% J+ w8 _

/ `4 L. `$ t. u+ f, x. t- Z: J7 g" ^  O b4cc8fedd9cc437a844c7de367a4b6ee.png / O' Q1 n8 ?" ~9 W

4 q6 b: U; g) @* a7 y- a& I+ Z
9 M! K: z" q( P; x
定时时间 = 定时器频率 / 倍频 /装载周期
& M7 r  H$ ~+ @& J+ E
/ Y8 z6 I2 C5 u( ?+ z6 B5 F

' x' V+ a+ R  Z
  1. htim1.Init.Prescaler = 72-1;; T& O% ^2 N: `4 x7 G
  2.   htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
    $ E  E, x! k4 _& C
  3.   htim1.Init.Period = 1*1000*1000;
    5 i( G0 W, j4 ~) B. K* V
复制代码
* W: ^+ o' _1 J, A% e6 |& S8 a+ V0 Z, B* U
tim = 72x10^6 / (72-1)/ 110001000 = 1us
" I& @# v+ T9 B2 L1 q3 Z# ?! F2 W$ f3 b' n# e! m

% b' x# S( s- B+ {3 _2 [根据定时器时钟的频率,比如时钟的频率是72MHZ,可以理解为一秒钟STM32会自己数72M次,预分频系数就是将频率分割,比如分频系数是72,则该时钟的频率会变成72MHZ/72=1MHZ,但是在设置的时候要注意,数值应该是72-1。假定分频系数是72-1,那么频率变成1MHZ,也就意味着STM32在一秒钟会数1M次,即1us数一次。好了,接下来就是确定预装载值,比如需要定时1ms,由于1ms=1us*1000,那么预装载值就是1000-1;如此类推,在预分频系数确定的情况下,定时的时长就由预装载值确定了。至于要把值减一的原因,估计是计数是从0开始,所以要减一。
5 e# ]3 I: G$ V8 Z
5 M& o' B" O: U7 u, j6 ~, u  ]' s例子
" a6 `/ K7 T( b5 Q! t0 m2 _
  1. //对于71MHZ的频率,500ms中断一次,这两个参数设置如下:# n3 X* i% ^% W' k
  2. TIM_Prescaler=7199;   //预分频值4 E. J( p0 R; Z, h
  3. TIM_Period=4999;    //下一个更新事件装入活动的自动重装载寄存器周期的值
    2 z* H4 k) x5 _3 H$ t# A. o
  4. & P! Q1 {! ], H
  5.    //分频7200,用72000000/7200=10000Hz; H2 W' p3 T; y
  6.    //此时的周期就是1/10000=0.0001s
    3 D3 O& o  }9 S( ]& R
  7.    //500ms=0.0001s*5000次
    $ t* ~0 b, D, q0 Q1 ]9 E9 @2 c
  8.    //5000-1=4999次
    ! ^! l0 o1 K, ~0 }/ V; x
  9.    //即通过4999次系统的运行,就是500ms+ z  w# }/ O6 F7 x6 D, J7 D
复制代码
$ P9 x  f7 J: ]$ Y7 A0 J6 X
公式
: x8 L1 Y- M( x对定时器周期公式的理解:
7 q! T1 F- C2 K: Q3 l
  1. T=(arr+1)*(PSC+1)/Tck  
    0 @2 d4 `2 {. a; R+ }# M  S# d$ @
复制代码
6 n$ ^; t8 A. z0 [& M/ ~& c6 M" A
其中TCK为时钟频率,PSC为时钟预分频系数,arr为自动重装载值。
2 b6 g. I. y0 x0 g
  1. f=Tck/(psc+1)*(arr+1)
    - X1 _. X4 ^* q4 ]1 x' s
复制代码

; j, }- v3 p, U/ ~- Z% ETck/(psc+1)即为时钟频率,1/f为机器周期,乘以(arr+1)即可得出定时器周期。
, h( m2 W1 _" R! E+ q$ \' F( U例子:TCK=72MHZ,psc=71.时钟周期=1us.(arr+1)值为多少,定时器周期就为多少毫秒。' N: U+ f, T$ d. J! R7 h/ m
————————————————
$ w0 f8 [5 u# U/ ]& C& N3 r) |版权声明:静思心远
' b3 S1 E3 X9 I/ l8 P0 w. O如有侵权请联系删除
7 {  @" S* o5 y3 V3 T; a& q# J
! J( X& h& u+ ~' N6 W+ k
' }3 n$ ~& P' `, E9 x1 P, ^
收藏 评论0 发布时间:2023-5-1 15:08

举报

0个回答

所属标签

相似技术帖

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