OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 14994|回复: 24

STM32F4外部中断响应时间

[复制链接]

3

主题

5

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-1-13
在线时间
0 小时
发表于 2015-1-13 18:00:59 | 显示全部楼层 |阅读模式
5金钱
  请问各位大虾,STM32F4从收到一个外部中断指令到进入中断响应函数,IO翻转需要多久时间呢

最佳答案

查看完整内容[请看2#楼]

这个可以自己测试出来的。拿示波器测试下
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-13 18:01:00 | 显示全部楼层
这个可以自己测试出来的。拿示波器测试下
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

5

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-1-13
在线时间
0 小时
 楼主| 发表于 2015-1-13 19:47:55 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
测试结果是240ns,感觉有点久,不太确定正确与否,51单片机好像在10个指令周期左右就能完成一个中断响应。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-14 00:11:46 | 显示全部楼层
回复【3楼】江湖小小酥:
---------------------------------
32位机的IO速度并不比8位机快多少的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

38

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2014-8-1
在线时间
6 小时
发表于 2015-1-14 19:36:34 | 显示全部楼层
权威是130ns左右,我用示波器测过
回复

使用道具 举报

7

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
307
金钱
307
注册时间
2016-1-23
在线时间
129 小时
发表于 2017-3-17 17:22:32 | 显示全部楼层
我测得中断响应时间为260ns,怎么能减到最小啊?
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 14:35:53 来自手机 | 显示全部楼层
你们都是怎么测的中断时间?为什么我用示波器测试的stm32f103的中断响应时间是600ns。各位大神可否告知?中断时间除了系统频率有关系,还需要设置什么?卡壳好久了。请帮帮忙。
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 14:37:55 来自手机 | 显示全部楼层
静 发表于 2015-1-14 19:36
权威是130ns左右,我用示波器测过

请问您是怎么设置测的中断时间?请赐教
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 14:38:40 来自手机 | 显示全部楼层
魂萦xy 发表于 2017-3-17 17:22
我测得中断响应时间为260ns,怎么能减到最小啊?

能得到26ns的中断时间也不错呀!请赐教。
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 14:39:07 来自手机 | 显示全部楼层
江湖小小酥 发表于 2015-1-13 19:47
回复【2楼】正点原子:
---------------------------------
测试结果是240ns,感觉有点久,不太确定正确与否 ...

能否告知怎么测试的。谢谢!
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 14:39:46 来自手机 | 显示全部楼层
还有没有那个大神看得见。帮帮我呀
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-5 14:42:55 | 显示全部楼层
本帖最后由 edmund1234 于 2019-3-5 14:48 编辑
江湖小小酥 发表于 2015-1-13 19:47
回复【2楼】正点原子:
---------------------------------
测试结果是240ns,感觉有点久,不太确定正确与否 ...

这时间是正常的, arm和51有分别, arm中断后需把n个寄存器压栈, 而51的话, 如果中断只做一条io翻转, 那是不需要压栈的
而且arm是有流水线, 跳转后流水线是要时间填满的

回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-5 14:47:08 | 显示全部楼层
icesight2018 发表于 2019-3-5 14:37
请问您是怎么设置测的中断时间?请赐教

一个通道接外部中断信号, 另一通道接中断里翻转的io, 两个通道信号改变的时间差减去io翻转指令的时间就是响应时间
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 14:57:09 来自手机 | 显示全部楼层
edmund1234 发表于 2019-3-5 14:47
一个通道接外部中断信号, 另一通道接中断里翻转的io, 两个通道信号改变的时间差减去io翻转指令的时间就 ...

是这么测试的。系统频率也是72Mhz。使用stm32f103芯片,为什么我的中断响应是600ns。有人测试400ns。不知道还跟什么有关系。
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 14:58:05 来自手机 | 显示全部楼层
edmund1234 发表于 2019-3-5 14:47
一个通道接外部中断信号, 另一通道接中断里翻转的io, 两个通道信号改变的时间差减去io翻转指令的时间就 ...

就是这个图。没有别的操作。就响应中断。为什么这么慢。
92B9D39A-064A-4608-BAE3-6CEA1C2D5968.jpeg
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-5 15:10:02 | 显示全部楼层
icesight2018 发表于 2019-3-5 14:58
就是这个图。没有别的操作。就响应中断。为什么这么慢。

72mhz的糸统, 我的大慨的估算是277ns
如果说超过这时间, 也许是发生外部中断时是在处理别的中断, 也说是中断被屏蔽了一段时间。

还有, 你不会是用了系统吧?
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 15:21:40 来自手机 | 显示全部楼层
edmund1234 发表于 2019-3-5 15:10
72mhz的糸统, 我的大慨的估算是277ns
如果说超过这时间, 也许是发生外部中断时是在处理别的中断, 也 ...

用了系统是什么意思?我就一个中断。没有其他中断。
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-5 15:27:35 | 显示全部楼层
icesight2018 发表于 2019-3-5 15:21
用了系统是什么意思?我就一个中断。没有其他中断。

是裸机还是用了FREE-RTOS这类系统?
还有, 你的APB2是否已经配置在上限?
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 15:31:21 来自手机 | 显示全部楼层
ApB2配置指的是系统时钟吗?配置是在72Mhz。就是买的正点原子的开发版自己写程序往里面下载!应该是你说的裸机
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 15:35:21 来自手机 | 显示全部楼层
edmund1234 发表于 2019-3-5 15:27
是裸机还是用了FREE-RTOS这类系统?
还有, 你的APB2是否已经配置在上限?

需要配置那些东西?目前我只知道系统频率。
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-5 15:52:23 | 显示全部楼层
icesight2018 发表于 2019-3-5 15:35
需要配置那些东西?目前我只知道系统频率。

你是否确定系统时钟已经配置为72MHz?
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 16:01:37 来自手机 | 显示全部楼层
edmund1234 发表于 2019-3-5 15:52
你是否确定系统时钟已经配置为72MHz?

有人就是中断响应时间只跟系统时钟有关是吧!我认为是这样的。
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 16:02:48 来自手机 | 显示全部楼层
正点原子的模版设置的应该就是72mhz。我看了一下程序应该没错。
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-5 16:33:06 | 显示全部楼层

/266

本帖最后由 edmund1234 于 2019-3-5 16:38 编辑
icesight2018 发表于 2019-3-5 16:02
正点原子的模版设置的应该就是72mhz。我看了一下程序应该没错。


我认真的算了一下

这段是在arm官网找到的
Cortex-M3 TRM (for example, revision 'I') states that the interrupt latency on entry is 12 cycles and the latency on exit is also 12 cycles. This is a typographical error in the Cortex-M3 TRM. The Cortex-M3 has a latency on exit of ten cycles, just like the Cortex-M4.

The processor has three main physical interfaces to its memory system; I-Code and D-Code  each accessing addresses below 0x20000000, and System accessing addresses 0x20000000 and higher. The 12 cycle latency requires that a nine cycle stack push can take place on one interface (typically the System interface) in parallel with a six cycle vector table read and interrupt handler fetch on other interfaces (typically I-Code). If these operations cannot be performed in parallel, they will have to be performed one after the other, increasing the latency. The ability to perform these memory accesses in parallel depends upon both the hardware design providing the relevant memory blocks at suitable addresses, and software programming of the location of the vector table, interrupt handler code, and stack in those memories
外部中断信号需要10ns脉冲宽 ~约1个时钟
中断延迟需 12个时钟
压栈 9个时钟
从VECTOR获取中断向量 6个时钟
判断中断的指令 ?建议你把这一部分屏蔽来测试
io翻转的指令周期?用
GPIOE->BSRR = GPIO_BSRR_BS_8;    这一句应是需时5个时钟
EXTI->PR = EXTI_PR_PR6;
GPIOE->BSRR = (GPIO_BSRR_BS_8<<16);

这样更改后一共为36时钟, 即0.5us(500ns)

如果说你的延迟是在这范围内就是合理, 否则就是还有别的错误
回复

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-11-27
在线时间
27 小时
发表于 2019-3-5 16:44:50 来自手机 | 显示全部楼层
edmund1234 发表于 2019-3-5 16:33
我认真的算了一下

这段是在arm官网找到的

感谢,万分感谢!我再仔细看看。已经卡了好久了。哎!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 22:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表