单片机定时器
更多
好的,我们用中文来详细讲解单片机的定时器/计数器。
简单来说,单片机定时器(Timer/Counter)是其内部一个非常重要的独立硬件单元,核心功能是进行精准的“计数”,并根据计数值实现“定时”或对外部事件进行“计数”。
? 核心概念解释
-
本质是计数器:
- 定时器的核心是一个计数器寄存器。它可以按照一定的规律自动递增或递减(通常是递增)。
- 计数器的“数”可以来源于两个地方:
- 内部时钟信号(用于定时): 接收来自单片机系统时钟(或者经过分频的系统时钟)的信号作为计数脉冲。计数器的每一次计数,代表一个固定时间间隔(如1个时钟周期)。
- 外部引脚信号(用于计数): 接收从单片机特定外部引脚输入的电平变化信号(如上升沿或下降沿)。计数器记录的是这个引脚上发生的事件(跳变)次数。
-
定时 (Timing):
- 当计数器使用内部时钟源进行计数时,由于这个时钟频率非常精准且固定,就可以实现计时功能。
- 如何定时? 设定计数器的初始值和一个目标溢出值。
- 当计数器从初始值开始计数值(比如
x)累加到超过最大值(称为溢出)时,会触发一个中断信号或者设置一个标志位。 - 计数器溢出所需要的时间 =
(计数器最大值 - 初始值 + 1) * 计数脉冲周期 - 通过精确设定初始值
x,就能得到需要的定时时间。例如,计数脉冲周期是1微秒,想要定时1毫秒(1000微秒),就需要让计数器计1000次,那么初始值可设为最大值 - 1000。
- 当计数器从初始值开始计数值(比如
- 应用: 产生精确的延时(如延时1秒)、周期性的操作(如每10毫秒检测一次按键、每1毫秒刷新一次显示)、测量输入信号的时间(如脉冲宽度测量)。
-
计数 (Counting):
- 当计数器使用外部引脚输入的信号进行计数时,它就是用来计量外部事件发生的次数。
- 应用: 计量旋转编码器的转动脉冲数、测量输入信号的频率或周期(需要配合定时器)、计算产品的通过数量。
? 定时器/计数器的主要组成部分和工作要素
-
计数器寄存器 (
TCNTn):- 核心部分,实际进行加/减计数的寄存器。用户通常可以读写它的值(读取当前计数、写入初始值)。
-
预分频器:
- 位于系统时钟源和计数器输入之间,用于降低计数脉冲的频率。
- 作用: 极大地扩展定时时间范围。如果不分频,时钟频率很高,计数器很快会溢出,难以实现长时间的定时(比如1秒)。分频后,计数脉冲变慢,达到相同计数次数需要的时间更长。分频系数通常是2、4、8、16、32、64、128、256等。
-
控制寄存器 (
TCCRn):- 用户通过这个寄存器配置定时器的工作模式:
- 选择时钟源(内部、外部?哪个引脚?边沿?)。
- 设置预分频器的分频系数。
- 选择工作模式。
- 用户通过这个寄存器配置定时器的工作模式:
-
输出比较寄存器 (
OCRn) 和输出比较功能:- 当计数器值达到设定在
OCRn寄存器中的值时:- 可以产生比较匹配中断。
- 可以自动控制相关的输出引脚 (OCn) 翻转电平或置位/清零。这是实现PWM(脉冲宽度调制) 输出和精确输出波形的核心。
- 应用(PWM): LED亮度调节、直流电机速度控制、舵机角度控制、产生音频信号等。
- 当计数器值达到设定在
-
输入捕获寄存器 (
ICRn) 和输入捕获功能:- 当指定的外部引脚上发生特定的边沿事件(上升沿、下降沿或双边沿)时,当前的计数器值会被瞬间“捕获”并保存到
ICRn寄存器中,同时可以产生中断。 - 应用: 精确测量外部输入信号的脉冲宽度、占空比、周期、频率。
- 当指定的外部引脚上发生特定的边沿事件(上升沿、下降沿或双边沿)时,当前的计数器值会被瞬间“捕获”并保存到
-
溢出/中断逻辑:
- 当计数器溢出(从最大值变回0)或发生输出比较匹配或发生输入捕获事件时:
- 会设置对应的状态标志位,反映发生了某个事件。
- 可以触发中断请求,让CPU执行相应的中断服务程序 (ISR) 来处理事件(重载计数器初值、处理采集的数据、执行特定任务等)。
- 当计数器溢出(从最大值变回0)或发生输出比较匹配或发生输入捕获事件时:
-
工作模式(常见):
- 正常模式 (
Normal/Overflow): 最基本模式。计数器不断计数,从0到最大值(如0xFFFF)然后溢出回到0。 - 比较匹配清零模式 (
CTC- Clear Timer on Compare match): 计数器加到与OCRn设定的值相等时,自动清零并产生匹配中断。可产生固定频率的方波。 - 快速PWM模式 (
Fast PWM): 计数器加到最大值溢出清零。在加计数过程中,当计数器的值小于OCRn值时,输出引脚为高(或低);大于等于时翻转。用于高频PWM。 - 相位修正PWM模式 (
Phase Correct PWM): 计数器先加后减。计数方向改变时或计数过程达到比较值时可能改变输出。频率比Fast PWM低,但分辨率更高,波形对称性好。 - 外部事件计数模式: 用于对外部引脚输入的脉冲计数。
- 正常模式 (
? 使用定时器的基本步骤(编程角度)
- 初始化配置:
- 通过配置控制寄存器 (
TCCRn) 来:- 选择工作模式(如Normal, CTC, Fast PWM)。
- 配置时钟源和预分频系数(决定计数频率或定时时间范围)。
- 配置输出和输入功能(如比较输出模式、输入捕获触发边沿)。
- 禁用计数器(在完全配置好之前)。
- 通过配置控制寄存器 (
- 设定寄存器初始值(可选):
- 往计数器寄存器 (
TCNTn) 写入期望的初始值(用于定时)。 - 往输出比较寄存器 (
OCRn) 写入比较值(用于产生输出或CTC定时)。
- 往计数器寄存器 (
- 设置中断(如果需要):
- 在中断屏蔽寄存器(通常叫
TIMSK等)中,使能所需的中断源(溢出中断、比较匹配中断、输入捕获中断)。 - 在程序的总中断使能位设置好后,编写对应事件的中断服务程序 (ISR)。
- 在中断屏蔽寄存器(通常叫
- 启动定时器:
- 在
TCCRn寄存器中设置正确的预分频系数(即非0值),定时器即开始计数。
- 在
- (中断服务中) 处理事件:
- 在溢出中断服务程序中:通常需要手动重载计数器初始值。
- 在比较匹配中断服务程序中:执行需要在精确时间点执行的代码(如果需要精确间隔输出,在CTC模式中也可能需要重载初始值)。
- 在输入捕获中断服务程序中:读取输入捕获寄存器 (
ICRn) 的值,这是捕获事件发生时计数器的值。结合两次捕获值可以计算时间差(如脉冲宽度)。
? 总结与应用场景
- 定时器是单片机精准时间控制的基石。
- 核心: 硬件计数器(可被内部时钟或外部事件驱动) + 配套控制、捕获/比较逻辑 + 中断。
- 关键作用: 解决CPU效率问题(靠轮询延时效率低、不精确)、实现精确定时/延时、周期任务调度、测量时间/频率、计外部事件数、生成精确波形/PWM。
- 常见场景:
- 软件延时替代(精确高效)。
- 多任务调度(操作系统的概念基础)。
- 数码管动态扫描、LED闪烁(稳定刷新)。
- ADC定时采样(例如10ms采样一次温度)。
- 定时检测按键(10ms去抖)。
- PWM控制(电机、灯光)。
- 串口通信的波特率发生器(串口本身用或作主时钟)。
- 输入捕获(测脉宽、频率)。
- 产生可调的音频信号。
- 外部脉冲计数(如流量计、编码器)。
? 举个简单例子(定时器实现LED闪烁)
- 配置定时器工作在
Normal模式,预分频系数选择64,系统时钟8MHz -> 计数频率 = 8MHz/64 = 125KHz -> 计数周期T=8微秒。 - 计算500ms需要计数次数 = 0.5s / 8μs = 62500次。
- 计数器最大值是65535,设置初始值
x = 65535 - 62500 + 1 = 3036。 - 配置允许定时器溢出中断。
- 启动定时器(设置预分频系数为64)。
- 当计数器溢出时(从65535到0),进入中断服务程序:
- 切换LED引脚状态(开变关,关变开)。
- 关键: 重新给计数器寄存器
TCNTn写入初始值3036,以保证下一次溢出也是500ms后。 - 清除中断标志(有些单片机自动清除)。
- 这样,每500ms,LED状态翻转一次,形成周期为1秒(500ms亮+500ms灭)的闪烁。
理解好定时器的工作原理和配置方法,是掌握单片机应用开发的关键一步!希望这个中文解释对你有所帮助!?
51单片机——定时器的原理和使用
定时器的原理1.cpu时序的有关知识震荡周期:为单片机提供定时信号的震荡源的周期(由外部的晶振)状态周期:2个震荡周期,用s表示机械周期 6个状
资料下载
李霞
2021-11-10 18:50:59
STC单片机定时器设置入门资料和STC89C52RC单片机定时器示例代码
STC单片机定时器设置 STC单片机定时器的使用可以说非常简单,只要掌
资料下载
1123127317
2019-08-22 17:30:00
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机