欢迎来到天天文库
浏览记录
ID:14127640
大小:191.50 KB
页数:9页
时间:2018-07-26
《stm32入门篇之通用定时器彻底研究》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、STM32入门篇之通用定时器彻底研究STM32的定时器功能很强大,学习起来也很费劲儿,本人在这卡了5天才算看明白。写下下面的文字送给后来者,希望能带给你点启发。在此声明,本人也是刚入门,接触STM32不足10天,所以有失误的地方请以手册为准,欢迎大家拍砖。其实手册讲的还是挺全面的,只是无奈TIMER的功能太复杂,所以显得手册很难懂,我就是通过这样看手册:while(!SUCCESS){看手册…}才搞明白的!所以接下来我以手册的顺序为主线,增加一些自己的理解,并通过11个例程对TIMER做个剖析。实验环境是STM103V100的实验板,
2、MDK3.2+Library2.东西都不怎么新,凑合用……TIMER主要是由三部分组成:1、时基单元。2、输入捕获。3、输出比较。还有两种模式控制功能:从模式控制和主模式控制。一、框图让我们看下手册,一开始是定时器的框图,这里面几乎包含了所有定时器的信息,您要是能看明白,那么接下来就不用再看别的了…为了方便的看图,我对里面出现的名词和符号做个注解:TIMx_ETR:TIMER外部触发引脚ETR:外部触发输入ETRP:分频后的外部触发输入ETRF:滤波后的外部触发输入ITRx:内部触发x(由另外的定时器触发)TI1F_ED:TI1的边沿
3、检测器。TI1FP1/2:滤波后定时器1/2的输入TRGI:触发输入TRGO:触发输出CK_PSC:应该叫分频器时钟输入CK_CNT:定时器时钟。(定时周期的计算就靠它)TIMx_CHx:TIMER的输入脚TIx:应该叫做定时器输入信号xICx:输入比较xICxPS:分频后的ICxOCx:输出捕获xOCxREF:输出参考信号关于框图还有以下几点要注意:1、影子寄存器。有阴影的寄存器,表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preloadregister(预装载寄存器),另一个是程序员看不见的、但在
4、操作中真正起作用的寄存器,称为shadowregister(影子寄存器);(详细请参考版主博客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的计数方式分三种:向上
5、、向下、中央对齐。通俗的说就是0—ARR、ARR—0、0—(ARR-1)—ARR—1.三、时钟源的选择这个是难点之一。从手册上我们看到共有三种时钟源:1、内部时钟。也就是选择CK_INT做时钟,这个简单,但是有一点要注意,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当 APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。例如AHP
6、72M,APB12分频36M,那么TIMER就是APB1的2倍频,即72M。怎么选择时钟模式1呢?只要将SMCR中SMS[2:0]弄成000就好了SMCR1514131211109876543210ETPECEETPS[1:0]ETF[3:0]MSMTS[2:0]SMS[2:0]2、外部时钟模式1这个比较麻烦,时钟源选择的其实就是TRGI(触发输入),但触发输入选择挺多的,共8个……。看框图,他们是:ITRx、TI1F_ED、TI1FP1、TI2FP2、ETRFITRx的东西跟定时器的级联有关,暂时不管他。要进入这种时钟模式首先置SM
7、S为111,当然这还没完,不像内部时钟那样,什么都配好了,这里你还得配置一下别的参数,比如选择TI1FP1,自然要对输入通道1的参数配置好,这样时钟才能按你需要的方式进来。就是配框图这块相关寄存器CCMR1(输入)IC2F[3:0]IC2PSC[1:0]CC2S[1:0]IC1F[3:0]IC1PSC[1:0]CC1S[1:0]CCER1514131211109876543210CC4PCC4ECC3PCC3ECC2PCC2ECC1PCC1ESMCR1514131211109876543210ETPECEETPS[1:0]ETF[3:
8、0]MSMTS[2:0]SMS[2:0]在CCMR1寄存器里选择好相应的输入(CC1S)和滤波(IC1F)后再配置好输入极性(CCIP)然后在SMCR中选择触发源(TS[2:0])为TI1这样输入通道就配好了!最后选择S
此文档下载收益归作者所有