打印

stm32中断怎么不跟51一样搞个JMP啊

[复制链接]
3125|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jackzbb|  楼主 | 2010-4-5 19:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32的外设中断都有固定的中断向量,这一点跟RAM7不同,但既然有固定的中断向量为什么不跟51样直接跳转如用B指令,而是搞个向量表?
沙发
ShakaLeo| | 2010-4-5 20:01 | 只看该作者
这么做估计是为了提高中断响应的速度,由于CM3是哈弗结构,在发生中断后,寄存器自动入栈要使用数据总线,这时指令总线可以到中断向量表中取向量然后对该地址的指令进行预取指,省去了一条跳转的指令。

使用特权

评论回复
板凳
香水城| | 2010-4-5 21:57 | 只看该作者
STM32的外设中断都有固定的中断向量,这一点跟RAM7不同,但既然有固定的中断向量为什么不跟51样直接跳转如用B指令,而是搞个向量表?
jackzbb 发表于 2010-4-5 19:07


STM32这样做有什么不妥吗?著名的8086也是使用这样的中断向量方式。

使用特权

评论回复
地板
hgjinwei| | 2010-4-6 07:16 | 只看该作者
人家直接将PC地址送过来总好过自己跑去取吧。

使用特权

评论回复
5
自然的天逸| | 2010-4-6 10:45 | 只看该作者
STM32的外设中断都有固定的中断向量 最起码在RAM 和flash  向量地址是不一样的吧

使用特权

评论回复
6
jackzbb|  楼主 | 2010-4-6 14:58 | 只看该作者
谢谢,进一步加深理解中。

使用特权

评论回复
7
zwll| | 2010-4-6 20:53 | 只看该作者
这样很不错啊

使用特权

评论回复
8
IJK| | 2010-4-7 09:38 | 只看该作者
向量表比用跳转更好。
51的架构太老了,并不先进。

使用特权

评论回复
9
rockli| | 2010-4-7 13:17 | 只看该作者
你去拜访客户,有两种方式:
一是问前台,前台告诉你在五楼,然后你去五楼;
二是你知道客户的地址在哪,直接去五楼了。

那种更快?

使用特权

评论回复
10
xsgy123| | 2010-4-7 15:49 | 只看该作者
给向量表只是自己写程序要查向量表,其它的还好

使用特权

评论回复
11
jackzbb|  楼主 | 2010-4-7 16:41 | 只看该作者
好像那个向量表可以FLASH任意的地方吧,只是要按那个顺序放,同时修改一下链接文件。不知道是不是这样的?

使用特权

评论回复
12
hgjinwei| | 2010-4-7 22:57 | 只看该作者
“0xE000ED08” 地址的寄存器指示向量表的位置。

使用特权

评论回复
13
kiton_law| | 2010-4-21 10:15 | 只看该作者
其实向量表中断和统一入口中断无所谓哪个好哪个不好,各有优点

统一入口的缺点是要ISR自己判断中断号,增加中断延迟,好处是向量表可以放在任意位置(因为向量表是自己定义的),很容易实现动态更改
向量表中断的缺点是向量表的位置不能是任意的(其实通过跳转指令来映射到一个自定义表也是可以的,但入口表还是要放在固定位置),如果规定向量表的位置是刚好是ROM,那么向量表将不能动态更改,好处是不需要自己查询中断号,中断延迟小

使用特权

评论回复
14
airwill| | 2010-4-21 12:16 | 只看该作者
楼上说得好全面
我感觉向量表就是比跳转指令好.
不信看看, AVR mega88, 和 mega168, 相同的内核, 本来就应该有相同的中断系统.
然而 AVR 使用了跳转指令, 导致 mega168 的中断向量区比 mega88 多了一倍.
如果使用向量表的话, 所有的 128K flash内的向量表就应该是一致的.
浪费啊, 不统一啊, 混乱啊...

使用特权

评论回复
15
kiton_law| | 2010-4-21 13:55 | 只看该作者
14楼你说的也不全对,我说了各有有点,你仅仅着眼于单片机一类,如果你的处理器需要上一个比较完善的OS,那么统一中断入口自然有它的方便性,OS可以提供单一的中断入口从而将中断资源划入OS管理范围。否则就要为每个向量安装相同的中断入口(指向OS管理的入口,或转向入口),看看linux在x86构架下中断管理的实现和在ARM构架下中断管理的实现就明白了

使用特权

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

本版积分规则

28

主题

74

帖子

0

粉丝