目录
一,定时器的简介
1,什么是定时器(TIM)
定时器就是能够准确规定一段时间的硬件电路。在单片机中,定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。也就是TIM,全名Timer。
在单片机中是16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。
2,为什么要用定时器
在上一章节,我写的是关于外部中断(EXTI)这篇文章,大家对中断有了一个概念,像外部中断这种需要物理动作才能触发中断函数执行,但很多情况下我们需要的是中断函数在适当时刻可以自动得去执行,所以就需要定时器来辅助了。
这就像是,你平时想认真学习,但在30分钟以后就要吃饭了,你担心错过吃饭时间,就设置了一个30分钟后会响的闹钟,在这30分钟你想怎么学习就怎么学习,不用担心时间问题。
3,定时器的应用
定时器(Timer)最基本的功能就是定时了,比如定时发送 USART 数据、定时采集 AD数据等等。如果把定时器与 GPIO 结合起来使用的话可以实现非常丰富的功能,可以测量输入信号的脉冲宽度,可以生产输出波形。定时器生产 PWM 控制电机状态是工业控制普遍方法,这方面知识非常有必要深入了解。
4,定时器的功能及分类
功能:
不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。
分类:
根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。
STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4
我们一般用不到高级定时器,因为高级定时器特有的功能,我们一般是用不上的,就比如死区生成,以我们目前的水平一般是不会遇到需要解决的这类问题 ,下面我给大家主要介绍通用定时器,顺便说一下什么是死区。 我是绝对不会告诉你们,其实是我不太会用高级定时器的,哈哈哈哈!
高级定时器:
通用定时器:
通用定时器的工作过程如图所示:
大家看了两幅图也知道,通用定时器比高级定时器少了DTG寄存器,极性选择以及时钟失效事件等等。
序号1是时钟发生器,序号2是时基单元,序号3是输入捕获,序号4是输出比较,通用定时器大致分为这4个部分。
在时钟发生器中,由内部时钟或外部TIMx_ETR等经过一系列处理产生时钟源,送入时基单元;在时基单元中经过预分频产生一个时钟,再由CNT进行计数(向上或向下),计数到自动重装载值时可以触发相应的中断;在输入捕获部分中,对TIMx_CHx中的信号进行捕获,再进行滤波等操作,再通过捕获比较寄存器中捕获到两次信号后的计数器的值,就可以得到脉冲宽度等;在输出比较的部分中,可以在捕获比较寄存器中设置一个数值,用计数器中的值与其比较,当高于该数值时,输出高/低电平,低于该数值时,输出低/高电平。