发新帖我要提问
12
返回列表
打印
[STM32L0]

如何计算中断从开始调用到返回所消耗的时间,打断点除外

[复制链接]
楼主: songchenping
手机看帖
扫描二维码
随时随地手机跟帖
21
songchenping|  楼主 | 2015-7-25 10:37 | 只看该作者 回帖奖励 |倒序浏览
fanxsd 发表于 2015-7-25 10:06
软件模拟计时 误差比较大!

是啊。

使用特权

评论回复
22
fanxsd| | 2015-7-25 13:16 | 只看该作者

这个还能精确吗,自己把IO翻转时间 也算进去。STM32 指令是并行处理的,这个方法应该最准确了。

使用特权

评论回复
23
john_lee| | 2015-7-25 21:44 | 只看该作者
绝对精确做不到,比较精确还是可以的,首先,中断的触发模式是“异步”的话,没法精确确定该中断的起始时间,要改为使用“同步”模式的中断,而 cortex-m 的同步中断只有一个,就是 svc。
然后要使用一个测量的硬件timer,在保证精度的前提下,使用 systick 或者外设定时器都可以。
具体步骤:
1、启动 timer。
2、读取并记下 timer 当前值
3、触发同步中断
4、再次读取并记下 timer 当前值(此时中断已返回)
两次 timer 的数值相减,就是中断触发直到返回所需的时间。不是绝对精确之处在于: “读取和记录 timer” 的这个操作最少需要 2 条 CPU 指令,还有用于触发中断的指令 svc 一条,总共 5 条指令,花费大概 10 周期左右。相比整个中断过程的时间,这个开销应该可以忽略了。

使用特权

评论回复
24
小浣熊| | 2015-7-26 18:57 | 只看该作者
控制中断,定时,这些都有很多需要学习的地方。。

使用特权

评论回复
25
dog_xin| | 2015-7-27 08:26 | 只看该作者
常常用一个输出口来检查,进入输出高,退出输出低,用示波器看,还能检查中断的周期

使用特权

评论回复
26
songchenping|  楼主 | 2015-7-27 09:02 | 只看该作者
小浣熊 发表于 2015-7-26 18:57
控制中断,定时,这些都有很多需要学习的地方。。

是啊。有些绕啊。

使用特权

评论回复
27
songchenping|  楼主 | 2015-7-27 09:03 | 只看该作者
dog_xin 发表于 2015-7-27 08:26
常常用一个输出口来检查,进入输出高,退出输出低,用示波器看,还能检查中断的周期 ...

这样做误差是有的,但是好像目前除了这个再没有什么好的办法了啊。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则