STM32定时器介绍
定时器的基本类型
前言
STM32F4xx 系列微控制器具有多达14个定时器。其中包括2个基本定时器,10 个通用定时器2个高级定时器其中最大定时器时钟可通过 RCC_DCKCFGR 寄存器配置为 84MHz 或者 168MHz。一般是默认配置
一、定时器计数模式
向上计数模式:
计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。
向下计数模式:
计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。类似于systick定时器
中央对齐模式(向上/向下计数):
计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。
二、几种定时器功能比较
基本定时器TIM功能
● 主要运用于定时计数以及驱动DAC
通用定时器TIM功能
● 定时器定时计数
● 输入捕获,有专门通道对应着管脚,外接一些信号可以被采集频率、脉宽等
● 输出比较,与上相反,设置脉宽之后通过管脚输出去驱动某些东西
● PWM输出,输出比较的应用之一
● 使用外部信号控制定时器和定时器互连的同步电路
高级定时器TIM功能
● 包含通用定时器的所有功能
● 带死区控制和紧急刹车,可用于PWM控制电机
时钟源:定时器时钟 TIMxCLK,即内部时钟 CK_INT,经 APB 预分频器后分频提供
计数器时钟:定时器时钟经过 PSC 预分频器之后,即 CK_CNT,用来驱动计数器计数
计数器CNT: 是一个 16 位/32的计数器
自动重装载寄存器:这里面装着计数器能计数的最大数值。当计数到这个值的时候,如果使能了中断的话,定时器就产生溢出中断
定时器计算中断时间举例
计时中断时间:1/(TIMxCLK/(PSC+1)) * (ARR+1)
1.time6,挂在APB1总线上,总线时钟是42M,提供time6时钟的频率就是42M*2=84M
2.84M经过预分频器PSC,从0-83(84-1),最终得到了CK_CNT=1M的频率去驱动CNT计数器计数
3.假设自动重载寄存器是(1000-1),触发中断的时间T=1/1M*1000=1ms
4.设置范围不能超过16位,即2^16
定时器输入捕获与输出比较
输入捕获
输入捕获可以用来捕获外部事件,拥有自己内部的通道,一个通道对应一个管脚。比如引脚的电平变化(上升沿,下降沿),并记录下变化的时间,通常可以用来测量外部信号的频率或者电平持续的时间
输出比较
此项功能是用来控制一个输出波形,当计数器与捕获/比较寄存器的内容相同时,输出比较功能做出相应动作,比如电平的翻转。通常用于生产PWM波形