目录
定时器分类:
stm32中有8个定时器,其中4个通用定时器、2个基本定时器和2个高级定时器
其中三种定时器的区别如下图:
其中TIM1和TIM8为高级定时器,它比起通用定时器和基本定时器多了互补输出的功能。通用定时器为TIM2到TIM5,它比起高级定时器少了互补输出,但其它功能比较完善。TIM6和TIM7为基本定时器,它没有捕获/比较的通道,也没有互补输出。
通用定时器特点
1.通用定时器挂载于APB1总线下,所以它配置时钟时用到的是APB1产生的时钟;
2.它支持向上、向下、中心对齐的计算模式,并且有自动装在计数器(TIM_CNT)
计数模式的工作原理和区别:
1.向上计数模式:
它的工作原理是从0计时到我们的自动加载值(TIMx_ARR)即最高的数值,然后到达后产生事件,又开始跳跃回从0重新开始计数。
2.向下计数模式:
它的工作原理是先从自动加载值(TIMx_ARR)开始向下向0计数,计数到0后产生事件又跳到自动加载值(TIMx_ARR)。
3.中央对齐模式:
它的工作原理是先从0开始计数到自动加载值(TIMx_ARR)产生事件,但不跳跃回0,而是继续向下计数到0产生事件,又开始从0计数到自动加载值(TIMx_ARR),如此反复
3. 它有一个可以实时修改的预分频器(TIMx_PSC),预分频系数可以取1~65535,选取不同的预分频系数可以改变时钟计数的长短;
4.它有CH1-CH4四个通道,四个通道互不影响,可以用于接下来的PWM、输入输出捕获等实验中。
5.外部信号可以控制定时器和定时器互相连在一起,即我们可以用一个定时器控制另一个定时器。
6.可以产生中断和DMA请求(计数器溢出发生更新、触发事件、输入捕获、输出比较)等时候可以产生中断和DMA请求。(中断是在数据寄存器满了后产生,而DMA是在数据块传输完后才请求中断;并且DMA是不需要CPU额外干预工作,它是直接将数据传进去内存或者相反,而中断的数据传输需要CPU帮助,所以DMA方式更加节约资源)
通用定时器功能:
1.捕获输入的波形,测量脉冲长度
2.定时、计数
3.PWM输出不同波形
定时器的工作框架:
上面这个图就是定时器的总体工作框架:
虽然看起来很复杂,但它可以细分为以下几个部分:
1.定时器时钟:
定时器的时钟为上面这部分图,定时器总体有4个时钟来源,分别来自
- 1.挂载在APB1的RCC的内部时钟;
- 2.外部IO口输入的时钟信号ETR
- 3.其它定时器输入的信号(仅2.3.4定时器有)
- 4.定时器下通道输入捕获捕获的信号
2.时基单元:
时基单元为上面这一部分,它用于将传输进来的时钟信号进行预分频等处理产生一个定时器的时钟(CK_CNT),并且利用这个时钟来进行计数。
3.输入捕获:
框图上面部分为用于定时器输入捕获的功能部分,外在信号通过通道被捕获,然后通过一些列处理和检测,可以得到输入波的波形周期等信号。
4.PWM输出:
框图右下角部分为用于PWM输出的部分,我们可以利用时基单元配帮产生一些我们需要的波形信号。例如我们可以控制一个捕获比较寄存器,让它于计时器内的值进行对比,从而可以控制输出不同的波形信号。