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

STM32定时器的框图分析

[复制链接]
我是你的e 发布时间:2015-4-3 14:41
TIMER主要是由三部分组成:
1、 时基单元。
2、 输入捕获。
3、 输出比较。
还有两种模式控制功能:从模式控制和主模式控制。
一、 框图
让我们看下手册,一开始是定时器的框图,这里面几乎包含了所有定时器的信息
为了方便的看图,我对里面出现的名词和符号做个注解:
TIMx_ETR:TIMER外部触发引脚 ETR:外部触发输入
ETRP:分频后的外部触发输入 ETRF:滤波后的外部触发输入
ITRx:内部触发x(由另外的定时器触发)
TI1F_ED:TI1的边沿检测器。
TI1FP1/2:滤波后定时器1/2的输入
TRGI:触发输入 TRGO:触发输出
CK_PSC:应该叫分频器时钟输入
CK_CNT:定时器时钟。(定时周期的计算就靠它)
TIMx_CHx:TIMER的输入脚 TIx:应该叫做定时器输入信号x
ICx:输入比较x ICxPS:分频后的ICx
OCx:输出捕获x OCxREF:输出参考信号
关于框图还有以下几点要注意:
1、 影子寄存器。
有阴影的寄存器,表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preload register(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为shadow register(影子寄存器);(详细请参考版主博客http://blog.ednchina.com/STM32/401461/message.aspx
2、 输入滤波机制
在ETR何TIx输入端有个输入滤波器,它的作用是以采样频率Fdts来采样N次进行滤波的。(具体也请参考版主博客http://blog.ednchina.com/STM32/263170/message.aspx
3、 输入引脚和输出引脚是相同的。
二、时基单元
时基单元有三个部分:CNT、PSC、ARR。CNT的计数方式分三种:向上、向下、中央对齐。通俗的说就是0—ARR、ARR—0、0—(ARR-1)—ARR—1.
三、时钟源的选择
这个是难点之一。从手册上我们看到共有四种时钟源:
1、 内部时钟(internal clock)。
也就是选择CK_INT做时钟,这个简单,但是有一点要注意,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当 APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。
例如AHP 72M,APB12分频36M,那么TIMER就是APB1的2倍频,即72M。
怎么选择时钟模式1呢?只要将SMCR中SMS[2:0]弄成000就好了
SMCR
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ETP
ECE
ETPS[1:0]
ETF[3:0]
MSM
TS[2:0]
SMS[2:0]
2、 外部时钟模式1(external input pin)
这个比较麻烦,时钟源选择的其实就是TRGI(触发输入),但触发输入选择挺多的,共8个。看框图,他们是:ITRx、TI1F_ED、TI1FP1、TI2FP2、ETRF
ITRx的东西跟定时器的级联有关,暂时不管他。要进入这种时钟模式首先置SMS为111,当然这还没完,不像内部时钟那样,什么都配好了,这里你还得配置一下别的参数,比如选择TI1FP1,自然要对输入通道1的参数配置好,这样时钟才能按你需要的方式进来。就是配框图这块
相关寄存器
CCMR1(输入)
IC2F[3:0]
IC2PSC[1:0]
CC2S[1:0]
IC1F[3:0]
IC1PSC[1:0]
CC1S[1:0]
CCER
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CC4P
CC4E
CC3P
CC3E
CC2P
CC2E
CC1P
CC1E
SMCR
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ETP
ECE
ETPS[1:0]
ETF[3:0]
MSM
TS[2:0]
SMS[2:0]
在CCMR1寄存器里选择好相应的输入(CC1S)和滤波(IC1F)后再配置好输入极性(CCIP)然后在SMCR中选择触发源(TS[2:0])为TI1这样输入通道就配好了!最后选择SMS为111,开启时钟(CR1中的CEN)。现在时钟就是从TI1上的输入了,可以接个时钟源进行计数之类的。同理,如果要用ETR就把它相关通道配好就可以了。
3、 外部时钟模式2(external trigger input ETR)
选择外部输入作为时钟,看框图:
从图上可以看出ETR可以直接作为时钟输入也可以通过触发输入(TRGI)来作为时钟输入即在时钟模式1中触发源选择为ETR,两个效果上是一样的,看起来好像这个外部时钟模式2没什么用处,实际上不是的,他可以跟一些从模式(复位、触发、门控)进行组合。比如当从模式选为触发时,我们不可能再通过触发源选择ETR了,因为从模式控制器被占了,好在有外部时钟模式2,我们选择这种模式后就可以把两者组合在一起完成一些功能了。
总结一下,STM32的时钟选择比较特别,在SFR中关于时钟选择配置位不再一块,不是说两个位在一起00、01、11就选择了而是由
SMCR中SMS和ECE 来控制,这样感觉可以吧内部时钟与外部模式2同时打开(SMS:000,ECE:1),也可以吧外部模式1和外部模式2同时打开(SMS:111,ECE:1),实际上上述两种方式用的都是外部时钟2.
4、内部触发输入
using one timer as prescaler for another timer, for
example, you can configure Timer 1 to act as a prescaler for Timer 2.
四、捕获比较通道
这就是我说的定时器三个组成部分中的两个部分了。核心是那个捕获比较寄存器。
看框图
异或那块先不管他,好像跟编码器有关,输入有个特色就是可以把TI的输入搞到CC1上去,也可以把T2的输入搞到CC1上去,其实也可以把T1搞到CC1上去同时把T1搞到CC2上去,这样就有了后来的PWM输入。
输出上的特色是不直接输出,而是有个OC1REF,这样可以定义高有效还是低有效,输出自己需要的有效电平。
; K( h! @2 D$ ?$ F( I7 C9 T
收藏 1 评论7 发布时间:2015-4-3 14:41

举报

7个回答
拼命三郎 回答时间:2015-4-3 17:16:23
xxxx.png
wn1900 回答时间:2015-4-3 17:39:57
STM32的定时器这块比较复杂
wamcncn 回答时间:2015-4-3 18:30:13
wn1900 发表于 2015-4-3 17:39
  u3 k( F& O* Y+ g+ r' vSTM32的定时器这块比较复杂
' x5 {- x: J" C  h1 W
功能强大了 ,肯定多少有点复杂
zhangdaijin 回答时间:2015-4-3 18:34:14
支持一下!
kqh1120 回答时间:2015-4-4 09:26:32
谢谢分享啊 smile.gif
damiaa 回答时间:2015-4-4 10:23:56
支持一下!
跟谁打 回答时间:2018-2-15 16:34:36
支持下

所属标签

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