首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于.prm文件修改的疑问[求助]

关于.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

void MSCAN0_receive(void){
}
函数前面要加上interrupt,不然编译器不认为是中断函数
斑竹阿,我记得好像中断服务例程有两种定义方式,一种就是用#pragma TRAP_PROC,另一种是用关键字interrupt说明的,应该不是这个原因吧。我用的是dp256b的片子,0xFFB2 也确实是can0_receive的中断入口地址,我就是不明白这怎么能出错呢,能在帮忙给看看吗?
interrupt是一定要加的,表明中断程序,否则你看汇编的返回指令是rts,不是中断返回的rti。

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

呵呵,正如斑竹所言,我用的是s12,不过我是用C语言写的
斑竹说得对阿,函数说明有问题,我是看人家的例子写的,没有太仔细考虑函数声明的事,老是想着地址有问题,因为错误提示是这么说的,看样子下次要小心了。非常感谢斑竹的帮忙,呵呵
我想做个can的程序,可是对S12中的can模块结构不是很清楚,看了些资料,可是看的不太明白,还请给指点一下,给个说明资料和例子程序.
不好意思了,我看的资料是公司内部的,不能给你,我也是刚开始做这些东西,有什么问题可以提出来,大家讨论一下
可以加你到QQ吗,我的QQ:263303370
返回列表