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

【MCU实战经验】+用一颗stm32f103做32个16位定时器

[复制链接]
szgaos 发布时间:2014-4-18 15:36
    在嵌入式中用的最多,最普通的可以就是IO口和定时器了,在51时代要多个定时器真是难。到了ARM时代这个问题就不是问题了,下面就做32个16位定时器。
6 d. I$ h) h: O$ U8 r 
# |2 P4 s4 g6 R5 t- W: [+ B/ n   在stm32f1系列中TM1,TM8为两个高级定时器,TM2,TM3,TM4,TM5,TM6,TM7,6个普通定时器,它们都是16位的,每个有4路独立的比较器。这样我们就有8*4=32个比较器了,我们就是要用这32个比较器做出32个定时器2 |# F: P( ]) M! e* Y
    我们先看一下定时器的输出比较功能:资料上说此项功能是用来控制一个输出波形,或者指示一段给定的的时间已经到时,这里我们就用输出一个固定时间的功能,我们先让计数器的最小计数时间为我们要的时间单元,比如1ms。然后设置比较器的比较值为我们要的定时值,如20,则为20MS,在产生的中断中,我们更改新为比较值,将比较值再加20,则为新的比较对象,下一个中断则在20秒后。
7 J; B; h  W% y7 q7 E, L     以下我们取一个定时器,做4个16们定时器,我们要得到4个定时器,分别为10ms,20ms,50ms,200ms.& U& s+ B# J, D& R* U
系统时为72MHZ,通过设置分频值得到一个1KHZ的时钟源,
- m! W. l$ w3 O我们先将定时器的计数器TIMx_ARR设置为65535,计数器加1为1ms,加到最大值时清0重新计数
# q& B1 [  x; c: J9 w定义4个变量
7 Y+ h. h5 d' M' p. s% \, R   U16  T10MS=10;" h- e) p* L' N
   U16 T20MS=20;
6 ]) q5 ?3 }* ~  k" {  U16 T50MS=50;9 f8 [4 l8 H$ T& K& T
  U16 T200MS=200: d! _! V% J  `) [
TIMx_CCR1+=T10MS;
# S, W5 x9 a; c2 B& C1 M6 A( F TIMx_CCR2+=T20MS;
$ f+ c8 b, M1 C0 [, Q- A9 YTIMx_CCR3+=T50MS;
+ e2 k% q) Q$ |! b0 qTIMx_CCR4+=200MS;9 F  V  g# |$ I1 x0 b% M4 |
将比较器中断使能
; L  O/ ~* U) j) i3 p- Z在每个对应中断中加更新比较值的语句  M, \" e, O0 @1 p/ b3 F
ISR TCMP1()0 Z( A7 y8 Y0 D
{
# t' k! Q/ |7 R- |" {( WTIMx_CCR1+=T10MS;  //更新比较值
4 U1 d, b. d! q}# A" g  }3 G1 H& ^
 5 G, }/ R* D# g% b  T' I: L
ISR TCMP2()9 u3 c- g% c, m, U; A6 L2 }
{( u! W9 a2 B* b$ O
TIMx_CCR2+=T20MS;  //更新比较值0 u5 i8 |5 i, X0 R2 Z/ c7 o
}
, f6 n; H! e# h, n 
- i5 Y$ g  c; M$ Q% \+ ?3 m$ N" ?ISR TCMP3()
, T4 u+ f' v9 D0 n& t  r% j' d{
, f7 q/ l. n- x, _) r! TTIMx_CCR3+=T50MS;  //更新比较值. d4 m9 {. q( F; s; a1 Q: o) D& `
}
. c0 a; c8 D! }0 [7 q7 R7 ?$ Q   S! r; _+ a- w/ m% P
ISR TCMP4()
- `- g0 @3 r" n, M! \: _{6 J  s# s. z* U; U6 @7 ]" T7 I
TIMx_CCR4+=T200MS;  //更新比较值
2 a3 |0 g# r; `6 w- W5 k/ t( X4 p  x; X9 O, B2 b. Y

& S4 K* f5 F' c8 }3 u* K" @& q) C; W6 d: ]. B
, r' G4 r% @& v) v  x
这样每个中断就对就相应的定时时间了。
' Z% m9 a; P; ?- z9 a; d怎样还可以吧,8*4=32个定时器。
7 r  s7 B9 i) g" {% m. D 
收藏 评论0 发布时间:2014-4-18 15:36

举报

0个回答

所属标签

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