原创 关于freescale芯片中断编程的问题

2009-3-6 15:30 2589 6 6 分类: MCU/ 嵌入式

看了ne64代码,中断函数有两种写法 ,一种是通过


   void  ( * const vector[])()  =  {
    ISR_Empty,                      // ff80 (reserved)
   ISR_Empty,                      // ff82 (reserved)


} 这种方式来写,例外一种 写法是这样的


__interrupt 7 void isrRTI(void)


对于7为什么就对应着时间中断函数呢,搞不清楚,到网上找了一下,明白一下这种情况


主要是在S12 DATASHEET里 没有表明 其中断向量号


可能会给初学者带来一些麻烦


从RESET 为0 算起 以后递增


中断的服务程序的写法有一下几种


1.interrupt关键字+中断向量号+isr函数


2.interrupt关键字+isr函数(isr在prm中VECTOR ADDRESS 映射)


3.#pragma TRAP_PROC声明(isr在prm中VECTOR ADDRESS 映射)


4.interrupt关键字+isr函数(isr在vector.c文件中定义函数指针数组 映射)


vector.c文件我只有在用PE的时候才能看到....


再看看ne64的头文件,终于明白了怎么回事


#define VectorNumber_VReserved9         9
#define VectorNumber_VReserved8         8
#define VectorNumber_Vrti               7
#define VectorNumber_Virq               6
#define VectorNumber_Vxirq              5
#define VectorNumber_Vswi               4
#define VectorNumber_Vtrap              3
#define VectorNumber_Vcop               2
#define VectorNumber_Vclkmon            1
#define VectorNumber_Vreset             0


或者看下面这个blog,他写着比较详细


http://blog.sina.com.cn/s/blog_551c235601008nqf.html

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条