
最近STM32F103的外部中断触发采集一组方波信号数据,但是发现数据总是不正确,怀疑是中断延迟即处理时间偏长导致的,所以测试了一下STM32F103的外部中断相应时间(中断触发信号有效到中断服务程序I/O输出之间的时间),测试信息如下: 1. 测试环境——STM32F103 @72MHz, 只配置几个输出端口和2个外部中断(端口速度配置位50MHz),但是只有一个有外部触发信号,中断服务程序直接输出测试端口状态,格式如下:
![]()
![]() |
可以试试不用库函数,直接读写寄存器应该会再快一些 |
响应进入中断程序时,CPU执行了很多压栈的指令和跳转指令,所以反应有点慢。如果追求速度的话,可以试试直接寄存器操作,速度应该会快点 |
确实是这样的,使用寄存器延迟会更小,在中断函数里定义局部变量也是要耗时间的。。。 |
很正常啊 如果想要纳秒级延时精度 可以考虑FPGA 那响应速度杠杠的 贼给力 |
暂时用不到,换个其他的方案试试。。。 |
顶楼主,这个问题我也是前两天才发现,和你的结论基本一致。在定时器中断里面翻转IO口,最高只能输出到500kHz的方波。因为中断响应的时间是几百纳秒级别的,波形上Mhz,很难。如果在中断里面增加一些变量判断,更慢。 |
不用不知道,一用吓一跳吧 ![]() |