这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 基于2410的中断分析(绝对经典)!

共6条 1/1 1 跳转至

基于2410的中断分析(绝对经典)!

菜鸟
2006-08-06 00:09:10     打赏

:难点:理解ARM的中断过程和中断向量表以及编程!

:终于明白了: 那张图可以解决中断问题了;

前32个字节的中断其始地址---》中断向量表(中断服务程序的地址填入向量表)--》地址解析程序来读向量表从而使PC指向中断服务程序

--》进行服务程序并返回现场;

.equ HandleReset, _ISR_STARTADDRESS

@#define _ISR_STARTADDRESS 0x33ffff00
.equ HandleUndef, _ISR_STARTADDRESS+4
.equ HandleSWI, _ISR_STARTADDRESS+4*2
.equ HandlePabort, _ISR_STARTADDRESS+4*3
.equ HandleDabort, _ISR_STARTADDRESS+4*4
.equ HandleReserved, _ISR_STARTADDRESS+4*5
.equ HandleIRQ, _ISR_STARTADDRESS+4*6
.equ HandleFIQ, _ISR_STARTADDRESS+4*7
这就是中断向量表,但是每个向量都要填入服务程序的入口地址;因此写服务程序时,都要写成这样:如


*( int *( _ISR_STARTADDRESS+4 )) = (int) ISR_Undef;

*( int *( _ISR_STARTADDRESS+8 )) = (int) ISR_SWI;

*( int *( _ISR_STARTADDRESS +12)) = (int) ISR_Pabort;

*( int *( _ISR_STARTADDRESS+4*4 )) = (int) ISR_Dabort;

*( int *( _ISR_STARTADDRESS +4*6)) = (int) ISR_IRQ;

*( int *( _ISR_STARTADDRESS+4*7 )) = (int) ISR_FIR;
这样就填入向量表里去了;其中ISR_Undef等都是中断函数的名字哦!如过还有不明白的

,可以发邮件给我,还有一张图可以帮助理解;linqijun211@163.com




关键词: 基于     中断     分析     绝对     经典     STARTADDRE    

菜鸟
2006-08-06 06:58:00     打赏
2楼

就这么点?那图呢?为啥没有贴上来?

不过还是不错的,感谢楼主:)


菜鸟
2006-10-04 00:05:00     打赏
3楼

函数名字不是函数地址吗,为什么要把地址类型转换成int类型再放入向量表中啊?


菜鸟
2006-10-27 23:53:00     打赏
4楼

不错,不错


菜鸟
2007-08-04 19:41:55     打赏
5楼
编写中断服务程序需要注意些什么啊?好像跟一般的函数不相同吧?

菜鸟
2007-10-31 10:19:02     打赏
6楼


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]