Board logo

标题: 关于isr_vectors的问题 [打印本页]

作者: zxdaemon    时间: 2007-5-25 07:24     标题: 关于isr_vectors的问题

今天看到了中断向量表的定义文件
isr_vectors.c,应用应该没有问题,不过对里面这两句定义的数据结构不是很理解。。。。



typedef void (*near tIsrFunc)(void);
const tIsrFunc _vect[] @0xFF80
= { /* Interrupt table */
UnimplementedISR, /* vector 63 */
.......
UnimplementedISR, /* vector 01 */
_Startup /* Reset vector */
};

[此贴子已经被作者于2007-5-25 7:24:01编辑过]


作者: huifreescale    时间: 2007-5-25 14:38

关注...
作者: strongchen    时间: 2007-5-25 15:20

你所不理解的是那部分呢?
作者: zxdaemon    时间: 2007-5-27 08:35

红色字体标记的typedef定义的tIsrFunc的类型

我理解的是定义一个函数指针数组的意思

const void ( * near _vect[] )( void) @0xFF80 = {} ......

不知道是不是这个意思

[此贴子已经被作者于2007-5-27 8:35:56编辑过]


作者: zxdaemon    时间: 2007-5-27 08:40

我在学HCS12上写uc/os的中断
不知道大家有没有这个方面的资料或是例程什么的
介绍来看看
作者: saserking    时间: 2007-5-27 16:01

中断向量表就是储存中断服务函数入口地址的

不过直接用interrupt关键字或者改prm文件吧,那样方便些
作者: zxdaemon    时间: 2007-5-27 16:20

1.interrupt关键字+中断向量号+isr函数
2.interrupt关键字+isr函数(isr在prm中VECTOR ADDRESS 映射)
3.#pragma TRAP_PROC声明(isr在prm中VECTOR ADDRESS 映射)
4.interrupt关键字+isr函数(isr在vector.c文件中定义函数指针数组 映射)

作者: huifreescale    时间: 2007-5-28 10:22

斑主: vectors.c只有在用PE的时候 才有 ...如果不用PE..如何查到中断向量表..是不是自己添加呢..
作者: zxdaemon    时间: 2007-5-28 10:26

“vectors.c只有在用PE的时候 才有”

不会把,vectors.c不是可以直接编译进行链接的嘛

等待版主。。。
作者: huifreescale    时间: 2007-5-28 10:29

还有 一点不明白的..书上讲 
为了保证监控程序不至于被应用程序调试过程中意外擦掉 监控程序应该用 FLASH 写保护?如何做到写保护?

作者: strongchen    时间: 2007-5-28 10:32

如果不用PE,则需要用户自己定义中断向量。网友zxdaemon在上面给出了几种不同的定义中断向量的方法。最简单的方法就是用中断号直接在程序中定义即可,如:

void interrupt 10 ISR_Int10(void){
}

中断号可以在数据手册的中断向量表中查出。复位的中断号为0,其余的依次递增。
作者: huifreescale    时间: 2007-5-28 13:31

谢谢..版主..
作者: upczhaokai    时间: 2007-5-29 17:17

怎样设置中断向量??
我编程的时候怎么没有vector.c的文件??
作者: strongchen    时间: 2007-5-30 09:45

一般是不需要vector.c文件的。最简单的方法就如我上面的帖子中说的,在程序中用中断号直接定义就可以了。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0