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

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

[复制链接]
攻城狮Melo 发布时间:2023-5-1 15:08
STM32 定时器频率
) o* Y- G6 s3 }! M" e* N! R1 e9 T' N( Q" y7 ]

/ [+ r+ d; a' b% q b4cc8fedd9cc437a844c7de367a4b6ee.png
4 A' F9 |6 \* m1 ~
# [* D6 B1 ~3 q- e3 w" h- e8 N- g

6 s/ C0 u1 v' E" A" _定时时间 = 定时器频率 / 倍频 /装载周期
6 p0 H9 s6 V2 s' e
: ~, F2 r( d9 G  H9 D
& y# Y, S$ W/ \" ~% x5 c6 x) }
  1. htim1.Init.Prescaler = 72-1;
    9 s/ C" ?9 l2 J. ?5 c. X, ~
  2.   htim1.Init.CounterMode = TIM_COUNTERMODE_UP;7 n$ h; k) Y4 T
  3.   htim1.Init.Period = 1*1000*1000;6 y; n$ }2 M1 J& p. V2 \0 t
复制代码
4 ]2 g6 ]- U- t9 W$ J* C
tim = 72x10^6 / (72-1)/ 110001000 = 1us2 {) N1 b4 x) {4 l- _
/ v6 Y7 C) v+ k
8 V+ y) f, U: h, {
根据定时器时钟的频率,比如时钟的频率是72MHZ,可以理解为一秒钟STM32会自己数72M次,预分频系数就是将频率分割,比如分频系数是72,则该时钟的频率会变成72MHZ/72=1MHZ,但是在设置的时候要注意,数值应该是72-1。假定分频系数是72-1,那么频率变成1MHZ,也就意味着STM32在一秒钟会数1M次,即1us数一次。好了,接下来就是确定预装载值,比如需要定时1ms,由于1ms=1us*1000,那么预装载值就是1000-1;如此类推,在预分频系数确定的情况下,定时的时长就由预装载值确定了。至于要把值减一的原因,估计是计数是从0开始,所以要减一。8 ]& X& I6 F1 U  R0 i$ Y) c

# H6 `+ Z* Z/ a+ e1 P! A' F. Z例子
. C& O. u% i: Z3 S: u- f$ W, Y
  1. //对于71MHZ的频率,500ms中断一次,这两个参数设置如下:
    2 K1 [, i8 ?! w/ R- E  |0 o6 ?; o/ f
  2. TIM_Prescaler=7199;   //预分频值
    ; t- d+ T3 \. X% e7 b3 [
  3. TIM_Period=4999;    //下一个更新事件装入活动的自动重装载寄存器周期的值
    # s' B9 C( [' u8 ~1 u+ h

  4. & l& c1 y' K/ y, ]# |
  5.    //分频7200,用72000000/7200=10000Hz
    $ p6 f) Z  l: D( }) l
  6.    //此时的周期就是1/10000=0.0001s
    7 n6 r' z& l8 G1 U4 B  D
  7.    //500ms=0.0001s*5000次$ H5 x1 G- L7 m* Q* [8 l
  8.    //5000-1=4999次
    2 l' @) \; y' {, g
  9.    //即通过4999次系统的运行,就是500ms' d. N7 k/ |: a4 w+ D+ \% Z" E
复制代码
4 l; I% w( w& Q8 C  d7 V7 ?# p
公式8 G. F3 W7 c/ Y4 t. K+ R0 f, D* V
对定时器周期公式的理解:; b' j- e2 V: o2 i% L6 H
  1. T=(arr+1)*(PSC+1)/Tck  ; E* A: P6 z* Z0 l, e
复制代码
3 N$ E4 A, e8 g* X( P* U  T
其中TCK为时钟频率,PSC为时钟预分频系数,arr为自动重装载值。
6 M' p7 p3 v4 ]* C- a2 d
  1. f=Tck/(psc+1)*(arr+1)( S8 i) \( h( r( a- D3 R9 p. j. O
复制代码
& S( W2 }* |5 b
Tck/(psc+1)即为时钟频率,1/f为机器周期,乘以(arr+1)即可得出定时器周期。! h1 G: p- y) ]/ j; z3 T  L7 Q
例子:TCK=72MHZ,psc=71.时钟周期=1us.(arr+1)值为多少,定时器周期就为多少毫秒。" u+ p* e$ H8 |0 v: g* X
————————————————
- }) v9 t2 e: z3 r, D5 S, G版权声明:静思心远
& Q3 `( ~7 `' Z! [' v如有侵权请联系删除
  M5 F$ w/ _. T& _/ h
) M0 N( g3 J6 L- v; I- `7 q7 I/ L  L
; o' z. w: y3 s1 K( r3 i1 @
收藏 评论0 发布时间:2023-5-1 15:08

举报

0个回答

所属标签

相似技术帖

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