智能车制作

标题: 中断函数名是怎么定义的? [打印本页]

作者: tank3508    时间: 2009-3-8 14:05
标题: 中断函数名是怎么定义的?
中断的函数名称到底是怎么定义的啊,比如 Int_TimerOverFlow,Int是什么意思啊?头文件里定义的是Vtimpaaovf啊。
void interrupt   Int_TimerOverFlow(void)这样定义中断都可以编译通过,prm里面没有写中断向量地址的,没写中断号的,怎么回事啊?
望高手指点!!!
作者: shibf    时间: 2009-6-1 21:49
没人知道吗?
作者: jackyu613    时间: 2009-6-1 23:45
Int是中断的简写,至于为什么不写中断号就能编译,我也不明白,同问!
作者: hwqdg    时间: 2009-6-2 15:17
中断函数名可以自己随便取,只要是中断向量号或者是中断地址和它对应上就行。
作者: zhizhi    时间: 2010-2-26 10:00
Int_TimerOverFlow   这个应该在头文件里面宏定义的,个人认为。
作者: lanbeilei    时间: 2010-7-30 13:24
嗯 这个貌似不像51那样,它不用中断号,是把那个中断向量的入口地址定义成宏来调用的
作者: hwqdg    时间: 2010-8-1 09:01
XS中的定时器溢出中断函数如下:

#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt VectorNumber_Vtimovf void  MCU_TIM_OverFlowInt(void)
{
    TFLG2_TOF = 1;       //清溢出中断标志
    //Add your code here
}
#pragma CODE_SEG DEFAULT

#pragma CODE_SEG __NEAR_SEG NON_BANKED用于将接下来的代码放入非分页区,在XS中中断函数向量只能是16位,放入非分页区才能被中断向量有效的指向。

interrupt VectorNumber_Vtimovf void  MCU_TIM_OverFlowInt(void)第一个interrupt表明这个函数为中断函数,VectorNumber_Vtimovf是在头文件中定义过了的中断向量号
#pragma CODE_SEG DEFAULT用于将接下来的代码放入默认的flash地区(默认一般是分页flash)。
作者: hwqdg    时间: 2010-8-3 20:21
对了,中断函数名随便定义,没有要求。
作者: chen4013874    时间: 2011-2-26 20:48
有点清楚了,谢谢
作者: iSmartCar    时间: 2011-2-26 23:09
void interrupt VectorNum FuncName(void)
{
}
/* 其中VectorNum在头文件中找,FuncName随便取名即可 */
作者: wjyeasy    时间: 2012-3-28 19:10
学习

作者: keep-seekin    时间: 2013-9-29 20:39
hwqdg 发表于 2009-6-2 15:17
中断函数名可以自己随便取,只要是中断向量号或者是中断地址和它对应上就行。

确定中断函数名可以随便改?我把一个函数名叫“scan”(interrupt void scan(void))的中断改成“bcan”(interrupt void bcan(void))了,为什么给我来这个?
[attach]50923[/attach]





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2