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

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

[复制链接]
szgaos 发布时间:2014-4-18 15:36
    在嵌入式中用的最多,最普通的可以就是IO口和定时器了,在51时代要多个定时器真是难。到了ARM时代这个问题就不是问题了,下面就做32个16位定时器。' f2 e6 n- s+ e' F* {
 . A! Z% k4 ?3 x& @& M* C! U/ W
   在stm32f1系列中TM1,TM8为两个高级定时器,TM2,TM3,TM4,TM5,TM6,TM7,6个普通定时器,它们都是16位的,每个有4路独立的比较器。这样我们就有8*4=32个比较器了,我们就是要用这32个比较器做出32个定时器; T) o0 k: [9 Q* G# t2 U& j# P; G
    我们先看一下定时器的输出比较功能:资料上说此项功能是用来控制一个输出波形,或者指示一段给定的的时间已经到时,这里我们就用输出一个固定时间的功能,我们先让计数器的最小计数时间为我们要的时间单元,比如1ms。然后设置比较器的比较值为我们要的定时值,如20,则为20MS,在产生的中断中,我们更改新为比较值,将比较值再加20,则为新的比较对象,下一个中断则在20秒后。
. I+ A( v, C' Z4 i     以下我们取一个定时器,做4个16们定时器,我们要得到4个定时器,分别为10ms,20ms,50ms,200ms.
; w4 `/ g6 Z; `系统时为72MHZ,通过设置分频值得到一个1KHZ的时钟源,
3 [+ y' {" P' k8 y我们先将定时器的计数器TIMx_ARR设置为65535,计数器加1为1ms,加到最大值时清0重新计数6 v7 z$ z1 g" {
定义4个变量. k. L/ {' ~9 p, [7 h* Q' v
   U16  T10MS=10;! k, ]: h- M6 T, r0 j
   U16 T20MS=20;9 }' ]/ l/ h3 ^5 P0 {
  U16 T50MS=50;, y( U" C6 M. ?' C, g7 i
  U16 T200MS=200
# G6 ~5 ~8 L, WTIMx_CCR1+=T10MS;
" B1 ^4 k9 |) Z1 U TIMx_CCR2+=T20MS;; `' S) a& I2 y+ o( i( w! _& ?, S: w
TIMx_CCR3+=T50MS;* a) b6 ~* S) d0 l# I
TIMx_CCR4+=200MS;- g$ U- c, W2 q. x7 h9 f: _4 W
将比较器中断使能$ G3 u) T8 v! {' ~2 L
在每个对应中断中加更新比较值的语句
! A6 W$ g7 E( \& ?5 y. T$ y' f+ WISR TCMP1()
7 r" t0 O- N1 F$ d{
3 y: Y& i, g/ D& I. l: r# TTIMx_CCR1+=T10MS;  //更新比较值5 i9 b/ u" `. E7 c
}% T. [3 _+ a" n4 ^! K0 Z  ?
 
' s& |  c, i0 mISR TCMP2()4 B+ E% Q6 s, z+ [- H
{
/ m0 `% H: n0 ~7 |8 w- _TIMx_CCR2+=T20MS;  //更新比较值* L3 ~: ]7 _  r0 c, y
}
$ @! C$ ~+ ~, W+ S1 o ) r) a# @( v4 ?& ^
ISR TCMP3()6 r- G3 \* h% D! `8 m; G  H
{& G* L, P) o! d2 t( j; M
TIMx_CCR3+=T50MS;  //更新比较值( h! V" ^7 e  k( E# u/ }
}
0 D: b+ @4 d0 B8 h# `) F) P 5 I7 ^, }' Q, Z- K- k
ISR TCMP4()
5 X; H4 U: ^4 s- P6 }& r1 k{% V; J6 R$ X: w
TIMx_CCR4+=T200MS;  //更新比较值" S9 F" w/ D$ J3 [* k$ g
. c( ~* F# \& H/ J- u( J( }

7 h8 G, k4 R: M( |9 u2 D
# N5 S' K4 _) z9 v8 C* _& X% t1 H% [" x8 }1 q+ a
这样每个中断就对就相应的定时时间了。
, X5 L" M( h, \! {& d" }怎样还可以吧,8*4=32个定时器。
: [$ K8 [$ W4 C; { 
收藏 评论0 发布时间:2014-4-18 15:36

举报

0个回答

所属标签

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