打印
[ARM入门]

ARM中断向量表问题

[复制链接]
1433|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

请问图中代码时ARM中断向量表的实现吗?
如果是,为何中断服务程序中最后都有指令B .
它的作用是什么,看不懂它为何要跳转到当前地址,这样不是死循环了吗
下面这张图是我找了STM32的启动代码,也是有B .

相关帖子

沙发
aozima| | 2017-2-20 14:06 | 只看该作者
本帖最后由 aozima 于 2017-2-20 14:09 编辑

死循环 总比 满天乱飞好。

你可以自己改一这块代码,加个默认中断处理程序进去,把中断号打印出来。
比如 "xx号中断没有写ISR"

使用特权

评论回复
板凳
renxiaolin| | 2017-2-20 15:36 | 只看该作者
那这个问题我不出手,那估计就是不了了之,哈哈哈

使用特权

评论回复
地板
lishutong| | 2017-2-21 12:51 | 只看该作者
只是提供一个默认的中断处理程序而已,防止你没有添加, 一旦发生异常,程序跑飞。
至于默认程序应该干什么,不同人可能有不同需求,写这个启动文件的人不知道,所以就简单的留空,弄成类似for(;;){}的死循环一样。
你可以在C中重义同名的函数,覆盖想替换的。比如
void MemMange_Handler (void)
{
   做点什么。。。
}

使用特权

评论回复
5
yjmwxwx| | 2017-2-21 13:41 | 只看该作者
编译器的设置呗, 我都是BX LR ,这样返回去就是知道哪条指令出错了。

有的编译器你没用到的中断全部共同用一个中断服务函数

使用特权

评论回复
6
潜龙出山| | 2017-2-22 15:59 | 只看该作者
楼上几位说的对,我的理解是,这个大概可以算是一种保护机制吧,防止程序发生异常,又找不到相应的中断服务函数,程序跑飞。
楼主可以查看一下weak这个关键字的用法,在编译器的帮助文档里面应该可以找到,如果你自己定义了中断服务函数以后,会把这些weak的中断服务函数给替换掉。

使用特权

评论回复
7
birdSTM32| | 2017-2-28 16:26 | 只看该作者
确实是保护手段,防止你触发了中断,确又没有处理中断而造成一些莫名其妙的问题。
你重写中断函数就可以了。

使用特权

评论回复
8
QQ1005498576|  楼主 | 2017-3-3 11:44 | 只看该作者
潜龙出山 发表于 2017-2-22 15:59
楼上几位说的对,我的理解是,这个大概可以算是一种保护机制吧,防止程序发生异常,又找不到相应的中断服务 ...

嗯嗯 查了下[WEAK]
看懂这代码怎么回事了
谢谢

使用特权

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

本版积分规则

3

主题

8

帖子

0

粉丝