打印

STM32中断服务程序执行时间和直接修改内存的疑问

[复制链接]
5719|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
whlcsu|  楼主 | 2012-3-9 10:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Keil中几点疑惑,不知各位有何高见:

1.在实时性要求非常严格的应用中,如何评估中断服务程序的确切执行时间?当然,先忽略中断嵌套的问题,即程序员如何知道单个中断从中断响应到中断返回耗时?

2.Keil中Debug的时候,能否直接在Watch窗口中改变变量或者寄存器的配置以程序的状态或系统配置,这样就不必每次都改一个数值然后重新编译。。。TI的CCS中就可以这样做。。。

3.Keil中如何调试中断服务程序?即,如果我不仅仅通过Watch窗口观察相应变量是否正确,我还希望观察中断服务程序的运行轨迹是否如我预期的一样,该如何做到呢?
沙发
acgean| | 2012-3-9 12:01 | 只看该作者
1。从中断响应到中断返回耗时, 我觉得可以用独定时器的计数值来准确了解。
2。有点奇怪,不知道你在改什么数值,Keil 好像没有这个功能。当然如果是象 while(--x); 这样的延时循环, 可以更改 X 的初始值的。

使用特权

评论回复
板凳
yifanfeng| | 2012-3-9 12:52 | 只看该作者
进入中断时设置某GPIO为高,中断返回时将其置为低, 然后用示波器量一下就行了。

使用特权

评论回复
地板
kaflash| | 2012-3-9 18:01 | 只看该作者
1) 示波器方法可行。 还有是将systick的中断等级设高,在这个里面计时,然后读2个时间差,当然这样的精度不是很高的。不过做起来方便

2)可以,在赋值结束后设置断点修改就可以了

3) 将断点设置在中断里面

使用特权

评论回复
5
airwill| | 2012-3-10 15:15 | 只看该作者
systick的中断等级设高, 这个没有必要, 定时器总是在不停的运行, 读定时器值就可以了

使用特权

评论回复
6
whlcsu|  楼主 | 2012-3-11 21:11 | 只看该作者
3# yifanfeng
4# kaflash

我使用读取独立定时器计数值的方法“测量”中断服务程序的执行时间,即进入中断,启动定时器从0开始计数,中断返回前,关定时器,读取计数值,计算中断耗时。在我的应用程序中,耗时1/72×158=2.19us。

可是,我用另一种方法:鼠标放在中断第一条代码处,执行运行到光标,如图

然后将光标放在中断最后一条代码后的__NOP();处,执行运行到光标,如图

两个时间相减,得出中断执行时间为11.4us!!!

请教各位大侠,为什么差别那么大呢?

使用特权

评论回复
7
acgean| | 2012-3-12 09:26 | 只看该作者
楼上的这个时间,我测试过, 精度很差,不能做准确时间的参考。

使用特权

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

本版积分规则

2

主题

59

帖子

0

粉丝