最大的问题还是中断进入和退出的开销.
假设 MCU 的主频为 72MHz, 那么计算出每次中断大概是 36 个周期.
查阅手册, 进出中断各需要 12个周期, 就已经 24 个周期了, 剩下的
EXTI->PR = 0x40;
Num++;
应该还有 12 个周期. 这已经很精炼了. 如果还想再优化, 你可以采用强制寄存器变量. 比如让 Num 就是 R7. 可以省去装载地址, 装载和存储指令(只剩+1 指令)
当然, 要想得到更快的速度, 你还有别的办法
1. 中断服务里采样多个中断信号.
2. 直接使用查询的办法
|