Stellaris的片内外设中断是如何实现的?

2019-03-24 16:21发布

想请教下坛友, Stellaris系列cortex-M3的片内外设的中断是怎么实现的?希望能以IO口中断为例子,说下代码运行的过程,希望能具体点。还有ARM内核的中断又是怎么个跳转过程,比如SysTick的的中断。 后来找到了一本讲解CM3很好的书,具体见附件 [ 本帖最后由 wstt 于 2011-2-24 15:37 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
daicheng
1楼-- · 2019-03-25 02:56
< 这个帖子这么好怎么没有人回答呢,可惜我了解的太少,我就把我知道 的简单的说一下吧
每种处理器都会在手册中说明中断地址的顺序,而这个顺序很重要,每次发生中断的时候就会去相应地址提取处理函数,也就是说这个中断向量的地址处存放的是我们的中断函数.默认的RAM或者FLASH在系统启动后从地址0处读取数据这个时候 存放了堆栈的初始化,然后是复位中断,这个时候程序跳转到main函数执行,
DCD     StackMem + Stack            ; Top of Stack
        DCD     Reset_Handler               ; Reset Handler
        DCD     NmiSR                       ; NMI Handler
        DCD     FaultISR                    ; Hard Fault Handler
        DCD     IntDefaultHandler           ; MPU Fault Handler
        DCD     IntDefaultHandler           ; Bus Fault Handler
        DCD     IntDefaultHandler           ; Usage Fault Handler
        DCD     0                           ; Reserved
        DCD     0                           ; Reserved
        DCD     0                           ; Reserved
        DCD     0                           ; Reserved
        DCD     IntDefaultHandler           ; SVCall Handler
        DCD     IntDefaultHandler           ; Debug Monitor Handler
        DCD     0                           ; Reserved
        DCD     IntDefaultHandler           ; PendSV Handler
        DCD     SysTick_ISR                 ; SysTick Handler

以上内容为字对齐,当发生SysTick 定时中断时就会到到 SysTick_ISR所在的地址执行这个函数,对于PC,LR,SP的操作C广语言是不需要操作的
academic
2楼-- · 2019-03-25 02:57
 精彩回答 2  元偷偷看……
wstt
3楼-- · 2019-03-25 06:49
感谢大斑竹的解答
wstt
4楼-- · 2019-03-25 10:39
我刚开始接触CM3很多不懂,找到了一本很不错的译本,讲解CM3的,上传上来跟大家分享下
鑫海宝贝
5楼-- · 2019-03-25 12:18
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章