飞思卡尔9s12xs128的中断声明多种方式

定义中断的方式有两种,

第一种
interrupt void PTH_inter(void) //PTH_inter 是中断函数名,这个可以任意取
这种方式需要在Project.prm文件中将这个函数名与中断向量对应上。
如在prm文件处写上"VECTOR ADDRESS 0xFFE8 PTH_inter" (0xFFE8是中断向量地址,在这只是举个例子),也可以写成“VECTOR VectorNumber_Vtimch7 PTH_inter” (VectorNumber_Vtimch7是中断向量号)

第二种
#pragma CODE_SEG __NEAR_SEG NON_BANKED //中断函数置于非分页区内
interrupt VectorNumber_Vtimch7 void ICU_Ch7Int(void)
{
TFLG1_C7F = 1; //清中断标志位
}
#pragma CODE_SEG DEFAULT //后续代码置于默认区域内

我一般第二种方式声明中断函数,这样可读性和可移植性都较好。
由于飞思卡尔16位单片机的中断向量是16位,所以中断函数只有被置于非分页区内才能被寻址到,这就是第一行的作用。
第二行中“VectorNumber_Vtimch7”是中断号,它是由文件“MC9S12XS128.h”中定义的宏,这个中断号在它的技术手册中找到,但是我建议你采用这种宏的形式,因为这个宏不容易出错,可读性较高,比如“VectorNumber_Vtimch7”即为定时器(TIM)通道7(CH7)所对应的中断号。中断函数名“ICU_Ch7Int”可任意取,没有影响

猜你喜欢

转载自blog.csdn.net/u012252959/article/details/84257625