Board logo

标题: 关于.prm文件修改的疑问[求助] [打印本页]

作者: sijiaoshe008    时间: 2006-9-18 14:19     标题: 关于.prm文件修改的疑问[求助]

我的.prm 文件修改如下:


VECTOR 0 _Startup /* reset vector: this is the default entry point for a C/C++ application. */
//VECTOR 0 Entry  /* reset vector: this is the default entry point for an Assembly application. */
//INIT Entry      /* for assembly applications: that this is as well the initialization entry point */


//can通信相关中断向量
VECTOR ADDRESS 0xFFB2 MSCAN0_receive


main.c中函数说明如下:


#pragma TRAP_PROC
void MSCAN0_receive(void){
}


出错信息如下:


link error: l1108: initializing of vector MSCAN0_receive failed because of over-or underflow of vector value


作者: seuafu2005    时间: 2006-9-18 15:19

void MSCAN0_receive(void){
}
函数前面要加上interrupt,不然编译器不认为是中断函数
作者: sijiaoshe008    时间: 2006-9-18 16:49

斑竹阿,我记得好像中断服务例程有两种定义方式,一种就是用#pragma TRAP_PROC,另一种是用关键字interrupt说明的,应该不是这个原因吧。我用的是dp256b的片子,0xFFB2 也确实是can0_receive的中断入口地址,我就是不明白这怎么能出错呢,能在帮忙给看看吗?

作者: seuafu2005    时间: 2006-9-18 17:31

interrupt是一定要加的,表明中断程序,否则你看汇编的返回指令是rts,不是中断返回的rti。

你用的是S12的单片机?那中断函数要放在非分页的空间里面
你在中断函数前面加上
#pragma CODE_SEG NON_BANKED


作者: sijiaoshe008    时间: 2006-9-18 17:51

呵呵,正如斑竹所言,我用的是s12,不过我是用C语言写的
斑竹说得对阿,函数说明有问题,我是看人家的例子写的,没有太仔细考虑函数声明的事,老是想着地址有问题,因为错误提示是这么说的,看样子下次要小心了。非常感谢斑竹的帮忙,呵呵
作者: qutao88    时间: 2006-9-19 09:56

我想做个can的程序,可是对S12中的can模块结构不是很清楚,看了些资料,可是看的不太明白,还请给指点一下,给个说明资料和例子程序.
作者: sijiaoshe008    时间: 2006-9-19 10:03

不好意思了,我看的资料是公司内部的,不能给你,我也是刚开始做这些东西,有什么问题可以提出来,大家讨论一下
作者: qutao88    时间: 2006-9-19 10:36

可以加你到QQ吗,我的QQ:263303370




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