us级开定时器中断,单片机的开销大,改用轮询的方式

一、中断的完整开销拆解(按执行顺序)

以辉芒微 8 位类 PIC 内核单片机为例,一次定时器中断的完整流程和耗时如下:

1. 硬件响应延迟(固定开销)

中断标志置位后,CPU 不会立刻进入中断:

  • 必须等当前正在执行的指令跑完(最长指令可能占 2~4 个时钟周期);
  • 硬件自动完成:程序计数器 PC 入栈、读取中断向量、跳转到中断服务函数入口,同时清空指令流水线。
  • 耗时:通常 2~8 个时钟周期,完全由硬件决定,不可优化。

2. 现场保护(入栈,核心软件开销)

8 位 MCU(PIC / 辉芒微这类架构)有一个关键特性: 硬件只会自动保存 PC(程序计数器),其他所有寄存器都要软件手动保存。 中断函数里只要用到了累加器 ACC、状态寄存器 STATUS、页寄存器 PCLATH、通用工作寄存器 R0~R7 等,都必须手动压入堆栈,否则中断返回后主程序的寄存器值会被破坏,程序跑飞。

  • 耗时:通常 5~20 个时钟周期,中断函数越复杂、用到的寄存器越多,入栈开销越大。

3. 业务代码执行

真正要做的事:判断中断标志、清标志、翻转 IO、变量自增等。

  • 耗时:简单操作通常 3~10 个时钟周期。

4. 现场恢复(出栈)+ 中断返回

和入栈对称:把之前保存的寄存器全部弹回原值,再执行中断返回指令,恢复 PC 指针、重新填充流水线。

  • 耗时:和入栈基本对等,5~20 个时钟周期。

二、算一笔实际占比账

以你当前的配置:计数时钟 16MHz,单时钟周期 = 62.5ns。 假设一次中断的「响应 + 入栈 + 出栈 + 返回」固定开销为 20 个时钟周期 = 1.25μs:

表格

定时周期 总时钟数 固定开销占比 剩余给业务代码的时间
1ms 16000 个 0.125% 几乎无影响,完全够用
50μs 800 个 2.5% 开销很小,可接受
5μs 80 个 25% 1/4 时间在进出中断
1μs 16 个 >100% 开销比定时周期还大,CPU 根本跑不了主程序

这就是为什么毫秒级中断完全没问题,而微秒级中断开销会大到无法接受。测到的 1.88μs "中断",本质就是标志没清掉、CPU 反复进出中断,大部分时间都消耗在中断跳转和栈操作上。


三、轮询为什么开销小

轮询是在主循环里直接读标志位 / 计数器,本质就是普通的寄存器读取 + 条件判断:

  • 没有上下文切换,主程序执行流是连续的,不需要清空 / 刷新流水线;
  • 没有额外的寄存器保存 / 恢复成本,所有寄存器都是主程序自己在用,不会被打断;
  • 单次查询只需要 2~3 条指令,耗时 1~3 个时钟周期,开销只有中断方式的几十分之一。

同时轮询的时序精度更高:中断有随机的响应延迟(取决于当前执行到哪条指令),而轮询的判断时机是确定的,微秒级短定时的抖动会更小。


四、适用场景总结

  1. 毫秒级及以上长周期(比如 1ms 系统时基) 用中断非常合适,开销可忽略,还能实现异步调度,不耽误主程序跑其他任务。

  2. 1~10μs 短周期定时 / 延时 优先用轮询实现,开销小、精度高,不会挤占主程序资源;只有当事件必须抢占主程序时,才考虑用外部中断,而非高频定时器中断。

相关推荐
nuoxin1143 小时前
BL-M8812CU3 无线 WiFi 模块-富利威
人工智能·嵌入式硬件·fpga开发·硬件工程·dsp开发
z20348315203 小时前
Livox Mid-360S点云图录制
嵌入式硬件·雷达·ros2
JNX_SEMI4 小时前
Hi5000Q/H 6.5~75V宽输入——与H5227A完全对等,无缝适配现有电源方案-聚能芯-智芯官方授权一级代理
驱动开发·单片机·嵌入式硬件·物联网·硬件工程
哥不想学算法4 小时前
STM32零基础教程(五):UART串口通信与协议设计
stm32·单片机·嵌入式硬件
WWJA王文举4 小时前
STM32时钟树怎么看?一步理解SYSCLK、HCLK、PCLK和外设时钟配置
stm32·单片机·嵌入式硬件
十月的皮皮4 小时前
STM32从零到量产开发:四路继电器工业控制模块开发 - 上位机操作说明书
c语言·stm32·单片机·stm32cubemx
ShiMetaPi5 小时前
ShiMetaPi-Pico-G1快速入门:04 系统登录
stm32·单片机·嵌入式硬件
wengqidaifeng6 小时前
2026 年电赛(TI 杯)控制类 H 题:8 路灰度循迹、直线/半圆分段控制与 S1/S2/S3 状态机
c语言·单片机·嵌入式硬件
Run_Teenage6 小时前
嵌入式:深刻理解GPIO的上拉输入、下拉输入、浮空输入、模拟输入
单片机·嵌入式硬件
单片机杂货铺7 小时前
【单片机毕业设计选题】基于LoRa的智慧农业环境监测系统设计与实现
stm32·单片机·嵌入式硬件·51单片机·硬件工程·课程设计