飞思卡尔9s12xs128中的中断函数应该怎样声明?其中的中断号是根据什么确定的?
1个回答
展开全部
#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”可任意取,没有影响。
由于单片机内部非分页区大小有限,非中断函数一般置于分页区内,最后一行即为此作用。
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”可任意取,没有影响。
由于单片机内部非分页区大小有限,非中断函数一般置于分页区内,最后一行即为此作用。
全测科技
2024-12-19 广告
2024-12-19 广告
确实可以进行维修。如果您的频谱分析仪出现问题,并且还在保修期内,建议您联系原厂进行维修,这样可以享受到免费的维修服务。如果已经超过了保修期,也不用担心,市场上有许多专业的维修服务可以提供帮助。您可以在网络上搜索深圳全测科技有限公司,这是一家...
点击进入详情页
本回答由全测科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询