打印
[STM32F1]

STM32F103浅学通用定时器TIMx(2-5)

[复制链接]
519|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前言
定时器,字面意思——能够计时的工具,51的时候已经初步学过,当然了,32也有定时器,功能相对来说比51的更完善,高级。
系统架构
        F103是大容量产品 因此通过系统架构图,我们可以知道TIMx处于不同的总线桥。TIM(2-7)在APB1(36MHz),TIM(1,8)在APB2(72MHz),那么可知TIM(1,8)比较特殊,不跟其他定时器在一起。那么就先了解一下,定时器之间的功能区别。



使用特权

评论回复
评论
初级工程渣 2022-12-31 23:17 回复TA
———————————————— 版权声明:本文为CSDN博主「未来秃头仔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/sbeau/article/details/128068866 
沙发
初级工程渣|  楼主 | 2022-12-31 23:18 | 只看该作者
定时器类型的基本介绍:
        stm32F103一共有8个定时器,分为三种类型。分别为高级定时器(TIM1,TIM8),通用定时器(TIM2-TIM5),普通定时器(TIM6,TIM7),更高级的定时器继承了低级定时器的所有功能,手册中有他们的功能区别。

使用特权

评论回复
板凳
初级工程渣|  楼主 | 2022-12-31 23:18 | 只看该作者

使用特权

评论回复
地板
初级工程渣|  楼主 | 2022-12-31 23:19 | 只看该作者
浅讲一下相关功能概念:
       计数模式:

                计数位数都是16位的定时器,但计数器模式有区别,高级与通用定时器模式相同且比普通定时器多。

                up,down :可以理解为0 --> x, x --> 0,x代表的是你设置在自动重装载寄存器的值,这个寄存器后面会提到。

                up/down:中央对齐模式(1,2,3),计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。

                而他们的小弟普通定时器功能就只能up 向上计数。

                当然了这只是F103这块,其他系列的TIMx相关功能不同。

使用特权

评论回复
5
初级工程渣|  楼主 | 2022-12-31 23:20 | 只看该作者
预分频系数:

                  三种预分频系数都为1-65536,对频率进行分频处理,这预分频系数后面也会提到,我们先知道有这个。

使用特权

评论回复
6
初级工程渣|  楼主 | 2022-12-31 23:21 | 只看该作者
     DMA请求:
                 DMA我的理解是,CPU的小助手,我们都知道CPU无时无刻都在处理任务,但有些事情并不是很重要或者很简单,这时候小助手DMA就出现了,她可以帮助CPU处理事务,例如数据的复制啥的,实现了数据的直接传输,省略了经过CPU参与。

使用特权

评论回复
7
初级工程渣|  楼主 | 2022-12-31 23:22 | 只看该作者
捕获/比较通道:

                 捕获就是可以检测通道的边缘信号跳变(上升沿/下降沿)将当前定时器的(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCR)里面,完成一次捕获。测PWM的输入时,就可以先测下降沿,为t1,测到后,将CNT清零,且设置为上升沿捕获,因此当下一次上升沿时,为t2,(t2-t1) 就可以测出为低电平的时间。

使用特权

评论回复
8
初级工程渣|  楼主 | 2022-12-31 23:23 | 只看该作者
比较就是计数器的值与转载的值比较,我们可以用这个来输出一个PWM,假设定时器是向上计数,当CNT<CCRx时输出0,当CNT>=CCRx输出1。这样我们就可以改变PWM的占空比。当然了CCRx的值要小于ARR(计数器自动重装值),不然还没到CCRx就清零了。

使用特权

评论回复
9
初级工程渣|  楼主 | 2022-12-31 23:24 | 只看该作者
    互补输出:

                输出上具备NPN和PNP两种输出晶体管的输出电路。高级定时器有互补输出,通用与普通定时器没有。

使用特权

评论回复
10
初级工程渣|  楼主 | 2022-12-31 23:25 | 只看该作者
时钟   
    了解完三种定时器的区**,就迈向下一步,了解定时器相关时钟控制。首先我们先查询手册,查看一下时钟树。

使用特权

评论回复
11
初级工程渣|  楼主 | 2022-12-31 23:27 | 只看该作者
   饭要一口一口吃,女孩子要一步一步追,所以学习得一步一步来。先学习定时器相关部分。

使用特权

评论回复
12
初级工程渣|  楼主 | 2022-12-31 23:28 | 只看该作者
   AHB总线架构配置成72MHz,经过AHB预分频器后,APB1和APB2的源头就是72MHz了。然后就到APB1预分频器,看树可知APB1最大也就36MHz,因此APB1预分频器最小值为“2”,这是输入到APB1其他外设上面的时钟源。定时器:处于预分频器后面,连在APB1预分频器下面。注意看分频器下面那个框框,“如果预分频器系数=1,频率不变,否则频率x2”,由此可知到输入到定时器的TIMxCLK频率为72MHz。(定时器2-7)

使用特权

评论回复
13
初级工程渣|  楼主 | 2022-12-31 23:29 | 只看该作者

使用特权

评论回复
14
初级工程渣|  楼主 | 2022-12-31 23:31 | 只看该作者
  APB2最大为72MHz,因此APB2预分频器可以设置为1,因为设置为1的话,就不用×2了,直接就是72MHz输入到TIMxCLK.(定时器1,8)。由此所有定时器的TIMxCLK相同,也就是内部时钟都为72MHz。知道这内部时钟后,就拿到了钥匙进入定时器框架。

使用特权

评论回复
15
初级工程渣|  楼主 | 2022-12-31 23:32 | 只看该作者
通用定时器框架
        此关卡以通用定时器框架为主,在前期学习先了解到时基及以上部分。

通过开局的学习,知道了CK_INT内部时钟为72MHz,经过触发控制器时,设置复位,使能,向上还是向下计数模式,在没有对时钟进行分频处理后,那么它出来后,CK_PSC还是为72MHz ,出来后就得经过PSC预分频器,将改变时钟频率了。

使用特权

评论回复
16
初级工程渣|  楼主 | 2022-12-31 23:33 | 只看该作者
预分频器寄存器
        那么PSC预分频器的大小就由寄存器的值来决定。

寄存器有16位,2^16 = 65536,但因为是二进制所以取值范围是0-65535,但预分频器的值是分母,分母不能为0,因此每一次设置预分频器的值后,还需加1。例如:设置为71,那么CK_CNT=72MHz/(71+1)= 1MHz,然后时间t = 1/f,因此 t = 1/1MHz = 1μs。

使用特权

评论回复
17
初级工程渣|  楼主 | 2022-12-31 23:34 | 只看该作者
CNT计数器寄存器      
          经过PSC预分频器后,就来到CNT计数器,这个就比较简单通过CK_CNT时钟线的频率,来计算当前值,比如当预分频器设置为71后,1μs后计数器将会+1。

使用特权

评论回复
18
初级工程渣|  楼主 | 2022-12-31 23:35 | 只看该作者
自动重装载寄存器

   设置上文提到的上限值(X),这个值大小范围0-65535。如果设置为0,计数器不工作。如果达到上限值时,表示定时完成,产生一个中断服务函数。那么就可以在中断服务函数里面处理相应任务了。

使用特权

评论回复
19
初级工程渣|  楼主 | 2022-12-31 23:36 | 只看该作者
总结一下,通用定时器的基本工作流程。首先在预分频器(TIMx_PSC)设置值,将时钟进行分频,后在自动重转载寄存器设置上限值(TIMx_ARR) X,后以时钟频率CNT计数器每次加1,到达自动重转载设的值后进入中断服务函数干活,嘿嘿!

以上便是最基础的定时器功能,实现计时的效果从而产生函数来实现相应功能。前面提到捕获/比较通道便是后面的学习内容,他将用于PWM的输入与输出,这次就先提前了解一下。

使用特权

评论回复
20
初级工程渣|  楼主 | 2022-12-31 23:39 | 只看该作者

TIMx_CH(1-4)对应的是相应的通用和高级定时器的引脚,在引脚图当中,我们可以找到相对应的引脚然后配置输入捕获,我们就可以捕获到脉冲的宽度。

         将引脚配置为输入模式后,通过引脚的输入,在边沿检测器下可以捕获到一个脉冲的边沿(上升沿或下降沿),自动重转载器设置一个上限值后,cnt就从0——上限值变化,因此,当测到后(假设下降沿)CNT计数器里面的值 t1 会存放到捕获/比较寄存器。当我们捕获到边沿时,便会产生一个中断,这时我们可以在中断服务函数里面,设置边沿检测器为上升沿捕获,当脉冲上升沿时,捕获时间值t2 ,这时我们用t2 - t1 便可以得到脉冲的低电平脉宽时间。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

676

帖子

0

粉丝