打印

2440 keil 如何设置中断服务函数?

[复制链接]
10324|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Lyc1992|  楼主 | 2013-1-29 23:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
阿南| | 2013-1-30 11:31 | 只看该作者
这个和Keil关系不在,ADS也是一样的,参考下ADS上的吧。启动代码部分需要中断向量表

使用特权

评论回复
板凳
Xplain| | 2013-1-30 22:33 | 只看该作者
2440的中断服务程序入口在2440init.s里边定义,如果你要设置EINT0的中断处理函数,可以在C文件里边这样做,
extern unsigned int *HandleEINT0;

*HandleEINT0 = EINT0_isr;
EINT0_isr为你的EINT0的中断处理函数

Unnamed.jpg (38.15 KB )

Unnamed.jpg

使用特权

评论回复
地板
inurl| | 2013-1-31 08:29 | 只看该作者
Xplain 发表于 2013-1-30 22:33
2440的中断服务程序入口在2440init.s里边定义,如果你要设置EINT0的中断处理函数,可以在C文件里边这样做, ...

楼上的用的什么工程模板?

使用特权

评论回复
5
Lyc1992|  楼主 | 2013-1-31 10:30 | 只看该作者
Xplain 发表于 2013-1-30 22:33
2440的中断服务程序入口在2440init.s里边定义,如果你要设置EINT0的中断处理函数,可以在C文件里边这样做, ...

你这个是由ads移植过来的吧,没有用keil的启动代码吗

使用特权

评论回复
6
inurl| | 2013-1-31 11:57 | 只看该作者
Lyc1992 发表于 2013-1-31 10:30
你这个是由ads移植过来的吧,没有用keil的启动代码吗

e:\Keil 3.8\ARM\Boards\Samsung\S3C2440\RTX_Blinky\S3C2440.s

使用特权

评论回复
7
inurl| | 2013-1-31 12:08 | 只看该作者
本帖最后由 inurl 于 2013-1-31 19:17 编辑
阿南 发表于 2013-1-30 11:31
这个和Keil关系不在,ADS也是一样的,参考下ADS上的吧。启动代码部分需要中断向量表 ...

版主,ARM9的向量表好像没有STM32的好用,要在IRQ_HANDLER里面判中断类型,STM32是跳到固定的向量地址

使用特权

评论回复
8
阿南| | 2013-1-31 15:48 | 只看该作者
STM32和ARM9都是ARM,向量表区别不大的

使用特权

评论回复
9
Lyc1992|  楼主 | 2013-1-31 17:21 | 只看该作者
inurl 发表于 2013-1-31 12:08
版主,ARM9的向量表好像没有STM32的好用,要在IRQ_HANDLER里面判中断类型,STM32是固定的向量地址 ...

要在IRQ_HANDLER里面判中断类型       正好问下

RM9里面irp类型中断向量地址都是同一个,那它本身的这个优先级判断有什么用呢?  最后还是要程序判断吗?

QQ截图20130131171331.png (16.9 KB )

QQ截图20130131171331.png

使用特权

评论回复
10
inurl| | 2013-1-31 19:16 | 只看该作者
Lyc1992 发表于 2013-1-31 17:21
要在IRQ_HANDLER里面判中断类型       正好问下

RM9里面irp类型中断向量地址都是同一个,那它本身的这个 ...

看2440的芯片手册,比什么资料都讲的清楚

使用特权

评论回复
11
inurl| | 2013-1-31 19:44 | 只看该作者
本帖最后由 inurl 于 2013-1-31 20:09 编辑
Lyc1992 发表于 2013-1-31 17:21
要在IRQ_HANDLER里面判中断类型       正好问下

RM9里面irp类型中断向量地址都是同一个,那它本身的这个 ...

keil对ARM9的支持还是不好, D:\Keil4\ARM\Boards\Samsung\S3C2440\RTX_Blinky里的启动文件里面都没有写IRQ的函数,startup很简单,peripheral lib完全没有,看来还是要用RVDS
对ARM7的支持就很好,D:\Keil4\ARM\RV31\LIB\ST\STR71x 这个工程就很全,vectors/startup/peripheral lib都有,另外还有工程讲解怎么用Lib,完全可以在此基础上做应用开发。

另外像下面的VECTOR,ARM7和ARM9就差不多都有,STM32上面就没用到。STM32的VECTOR写起来很简单




无标题.jpg (35.26 KB )

无标题.jpg

使用特权

评论回复
12
Xplain| | 2013-1-31 22:56 | 只看该作者
inurl 发表于 2013-1-31 08:29
楼上的用的什么工程模板?

天嵌的裸机程序,不过也是参考原厂的工程,网上看到的都差不多

使用特权

评论回复
13
Xplain| | 2013-1-31 22:57 | 只看该作者
其实Keil自动生成的启动文件一般都不用的,自己参考uboot,或者其他现成的工程改改就能用了

使用特权

评论回复
14
Lyc1992|  楼主 | 2013-2-1 10:29 | 只看该作者
刚学,就看到好几个不同的启动文件了,好多都是自己改的。头都弄晕了

使用特权

评论回复
15
inurl| | 2013-2-1 12:39 | 只看该作者
Xplain 发表于 2013-1-31 22:57
其实Keil自动生成的启动文件一般都不用的,自己参考uboot,或者其他现成的工程改改就能用了 ...

UBOOT都是gcc编译的,keil要改很多东西啊

使用特权

评论回复
16
Xplain| | 2013-2-1 22:44 | 只看该作者
inurl 发表于 2013-2-1 12:39
UBOOT都是gcc编译的,keil要改很多东西啊

uboot可以用keil编译,我一直都是这么干的

使用特权

评论回复
17
nongxiaoming| | 2013-2-2 01:25 | 只看该作者
把你的中断服务函数的地址赋给对应的中断寄存器就好了啊~

使用特权

评论回复
18
inurl| | 2013-2-4 14:43 | 只看该作者
Xplain 发表于 2013-2-1 22:44
uboot可以用keil编译,我一直都是这么干的

keil里面用调用GCC编译 ?

使用特权

评论回复
19
Xplain| | 2013-2-7 21:45 | 只看该作者
inurl 发表于 2013-2-4 14:43
keil里面用调用GCC编译 ?

移植startup.s文件,修改嵌入式汇编,修改连接文件,编译的时候加-gnu选项,支持gnu扩展语法就可以了

使用特权

评论回复
20
Lyc1992|  楼主 | 2013-2-8 17:14 | 只看该作者
ls的现在来说太高深了,移植ads的启动代码,还看的懂。keil自带的启动代码估计是要自己去加中断向量表的。就是两种启动方式的中断入口地址有点纠结。

使用特权

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

本版积分规则

16

主题

155

帖子

1

粉丝