打印

求助:STM32的中断处理流程是怎样的?与ARM9相同吗?

[复制链接]
3095|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fanwei326|  楼主 | 2011-12-9 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32的中断处理过程
我有一个疑问,在启动代码中,复位中断向量地址处用的是DCD Reset_Handler,并不是跳转指令 b Reset_Handler或LDR PC,=Reset_Handler。那么启动时是怎么会跳转执行Reset_Handler子程序的呢?
请各位大虾帮忙解惑!
其它中断也是同样的,都是在向量表中放的DCD XXXX_Handler ,不知道是怎样跳转到中断入口函数的。

ARM9的启动代码就不是这样的,在中断向量处直接用的跳转指令诸如“LDR PC,=Reset_Handler”之类
是否CM3与ARM7/9的异常处理机制不同呢?
我暂时是这样理解的:
中断向量地址处用DCD伪指令来存放ISR的入口地址,在发生异常时CM3自动跳转到相应的中断向量地址处存放的ISR入口地址,执行相应的ISR。不需要用跳转指令--不知道这样理解对不对???
请各位大虾不吝指教!!!


沙发
yan2005| | 2011-12-9 15:10 | 只看该作者
类似的问题你上次已经问过一个了,差不多你理解的这个样子吧。中断的处理过程其实包含硬件动作和软件动作两部分。具体的细节还是看arm网站上的cm3资料吧。

你的学习精神不错,不过我的看法:
以前做ARM7的时候,需要对这一套中断机制理解的深些。现在做stm32,我觉得没必要深抠这块的东西了,前面的S文件只要理解其功能就可以。st提供的例子程序里面的代码已经够用了,用户直接从C代码开始自己的工作。把自己的注意力集中到具体应用上面,而不是在中断处理上重复思考和劳动。

使用特权

评论回复
板凳
fanwei326|  楼主 | 2011-12-13 19:43 | 只看该作者
谢谢你的答复,虽然我不赞同你对于底层处理不探究的观点。

使用特权

评论回复
地板
fanwei326|  楼主 | 2011-12-13 19:46 | 只看该作者
忘记给分了。

使用特权

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

本版积分规则

3

主题

56

帖子

3

粉丝