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

在prm中声明中断向量地址

在prm中声明中断向量地址

我用的是dg128的片子,想做一个它的串口中断程序,不知道如何在prm中声明中断向量地址,请大家给个例子吧.
VECTOR X InterruptName; X是中断号,
或:
VECTOR ADDRESS 0xFFFC InterruptName;

InterruptName是写在程序里的中断函数名,式如:

interrupt void InterruptName(void){};
海纳百川  有容乃大
VECTOR ADDRESS 0xFFFC InterruptName;应放在prm中的什么位置?是在SEGMENTS和end间吗?还是在PLACEMENT和end间?第一次中断程序!请指点!谢谢了!
能给个例子吗,好象不行呀!编译通不过!!!
把你的project贴上来,我帮你改一下。
海纳百川  有容乃大
传不上去!可以用QQ吗?或者其它什么的
strongchen_free@yahoo.com.cn
海纳百川  有容乃大
发到你邮箱了!谢谢版主!
VECTOR ADDRESS这一句加在PRM文件里,VECTOR 0的后面,如:

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 a Assembly application. */
//INIT Entry /* for assembly applications: that this is as well the initialisation entry point */
VECTOR ADDRESS 0xFFFC SCI0Interrupt /*后面不要分号*/

另外在main里面,中断函数必须放在非分页地址中,所以其前后可以各加一个#pragma:

#pragma CODE_SEG NON_BANKED
interrupt void SCI0Interrupt(void)
{
}
#pragma CODE_SEG DEFAULT

我已经把改好的project打包发给你了。
海纳百川  有容乃大
#pragma CODE_SEG NON_BANKED
interrupt void SCI0Interrupt(void)
{
}
#pragma CODE_SEG DEFAULT
就是把程序放在非分页地址中的作用吗?
还有为什么只能放非分页地址中呢?
因为中断向量是16位的,而分页地址是22位的。所以中断必须放在非分页地址中,才能根据中断向量进行寻址。
海纳百川  有容乃大
哦!谢谢!
你好,现在还有点问题,具体发到你邮箱了,请你指导一下
有什么问题还是到这里来发贴比较好,不但能让更多的人看到,也会得到更多的帮助。
海纳百川  有容乃大
你说写入片子后不能进入中断,但你的project中只有full chip simulation,即软件仿真,没有硬件调试的target。你应重建一个project,在引导中选择硬件调试的target连接。
海纳百川  有容乃大
返回列表