@TOC
分为四部分,八小节
一部分:主要讲定时器基本定时的功能,也就是定一个事件,让定时器每隔这个时间产生一个中断,来实现每隔一个固定时间来执行一段程序的目的,比如做一个时钟、秒表,或者使用一些程序算法的时候,都需要用到定时中断的功能
二部分:定时器输出比较的功能,输出比较模块最常见的用途是产生PWM波形,用于驱动电机等设备(学习一下驱动舵机和直流电机)
三部分:定时器输入捕获的功能,学习使用输入捕获这个模块实现测量方波频率的例子
四部分:定时器的编码器接口,使用编码器接口,更加方便地读取正交编码器的输出波形,在编码电机测速中,应用广泛
STM32中功能最强大、结构最复杂的一个外设——定时器
定时器本质上是一个计数器,当计数器的输入是一个准确可靠的基准时钟的时候,那就基准时钟计时的过程中,实际上就是计时的过程,比如STM32中,定时器的基准时钟一般都是主频72MHz,比如对72MHz计72个数,那就是1MHz也就是1us的时间,如果计72000个数,就是1KHz,1ms时间,
16位计数器就是用来执行技术定时器的一个寄存器,每来一个时钟,计数器加1,
预分频器可以对计数器的时钟进行分频,让这个计数更加灵活
自动重装寄存器就是技术的目标值,就是想要计时多少个时钟申请中断
这些寄存器构成了定时器最核心的部分,我们把这一块电路称为时基单元。
时基单元里计数器、预分频器、自动重装寄存器都是16位的,216=65536,也就是如果预分频器设置最大,自动重装也设置最大,那定时器的最大定时时间就是59.65s, 72M/65536/65536得到的是中断频率,然后取倒数,就是59.65s多。如果还觉得不长,STM32的定时器还支持级联的模式,也就是一个定时器的输出,当做另一个定时器的输入,,这样就是59.65s再乘两次65536=8千多年,如果还嫌短,再级年一个定时器,,定时时间再延长65536*65536倍,时间大概是34万亿年。可见指数爆炸的威力。
由于定时器的这个基本结构是非常通用的,很多模块电路都能用到,所以STM32定时器上扩展了非常多的功能,第一部分讲定时器中断和内外时钟源选择的功能,第二部分讲输出比较,第三部分讲输入捕获和主从触发模式,第四部分讲编码器接口。
学习学的是通用定时器
因为同一块芯片有很多定时器,所以TIM后面会跟一个数字,编号和定时器类型的对应关系就是TIM1和TIM8是高级定时器,2345是通用定时器,67是基本定时器。连接的总线不一样,需要注意一下。