想要好好的使用定时器/计数器,首先要理解定时器的结构
以下是51内核的定时器描述
所谓计数器就是对外部脉冲的计数
所谓定时器也是对脉冲的计数,但是计数的是MCU内部发出的秒冲。通过计数脉冲
个数来实现定时,
所以,定时器和计数器本质上面是一样的,
定时器T0和T1分别是两个8位特殊功能寄存器TH和TL构成,
工作方式寄存器TMOD:用于定时器的工作模式和工作方式
控制寄存器TCON:用于启动和停止定时器的计数,并且控制定时器的状态。
需要注意的是:单片机复位时,两个寄存器的所有位都被清0.
每个定时器内部结构实际上就是一个可编程的加法计数器,由编程来设置他工作时是在定时器状态和计数器状态。
计数器工作模式:
就是对外部事件进行计数,计数脉冲来自对应的外部输入引脚T0或者T1,当输入信号发生下降沿变1–0,或者上升沿0–1,时,计数器的+1。计数的最高频率一般为振荡频率的1/24
定时器工作模式:
计数脉冲来自于内部时钟脉冲,每个计算器周期计数值+1,每个机器周期等于12个振荡周期
因此计数频率为振荡频率的1/12,所以定时器时间=计数值*机器周期
下面是STM32的定时器:
定时器分别是高级定时器,通用定时器,基本定时器,
高级定时器具有捕获,比较通道和互补输出,通用定时器只有捕获/比较输出,基本定时器没有以上的两者。
下面是通用定时器: