飞思卡尔智能车总结 之中断的处理方法

  参加飞思卡尔比赛。

  对于我这个学计算机软件的人,来写单片机的程序,还真的是由不少困难。最近一直在看freescale的程序规范,真的是很纠结。我全部的硬件编程经验不过是去年硬件小学期的vhdl程序,在试验箱上捣鼓捣鼓程序逻辑,就这点。本来就忘的差不多了,况且它与单片机的模式还有很多区别。所以啊``忍之,忍之,全当自我挑战了。

 

 机械部分和电路部分完成,接下来该做的软件调试和综合测试。

 

 我得累了。

 

  今天遇到了一个关于中断怎么写的问题,纠结了很久,总结一下:

 

    标准的程序段是这样的格式:

   #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”可任意取,没有影响。

由于单片机内部非分页区大小有限,非中断函数一般置于分页区内,最后一行即为此作用。

 

令:MC9S12XS128.h中的宏定义是这样的:

/**************** interrupt vector numbers ****************/ #define VectorNumber_Vsi 119 #define VectorNumber_Vsyscall 118 #define VectorNumber_VReserved118 117 #define VectorNumber_VReserved117 116 #define VectorNumber_VReserved116 115 #define VectorNumber_VReserved115 114 #define VectorNumber_VReserved114 113 #define VectorNumber_VReserved113 112 #define VectorNumber_VReserved112 111 #define VectorNumber_VReserved111 110 #define VectorNumber_VReserved110 109 #define VectorNumber_VReserved109 108 #define VectorNumber_VReserved108 107 #define VectorNumber_VReserved107 106 #define VectorNumber_VReserved106 105 #define VectorNumber_VReserved105 104 #define VectorNumber_VReserved104 103 #define VectorNumber_VReserved103 102 #define VectorNumber_VReserved102 101 #define VectorNumber_VReserved101 100 #define VectorNumber_VReserved100 99 #define VectorNumber_VReserved99 98 #define VectorNumber_VReserved98 97 #define VectorNumber_Vatd0compare 96 #define VectorNumber_VReserved96 95 #define VectorNumber_VReserved95 94 #define VectorNumber_VReserved94 93 #define VectorNumber_VReserved93 92 #define VectorNumber_VReserved92 91 #define VectorNumber_VReserved91 90 #define VectorNumber_VReserved90 89 #define VectorNumber_VReserved89 88 #define VectorNumber_VReserved88 87 #define VectorNumber_VReserved87 86 #define VectorNumber_VReserved86 85 #define VectorNumber_VReserved85 84 #define VectorNumber_VReserved84 83 #define VectorNumber_VReserved83 82 #define VectorNumber_VReserved82 81 #define VectorNumber_VReserved81 80 #define VectorNumber_VReserved79 79 #define VectorNumber_VReserved78 78 #define VectorNumber_VReserved77 77 #define VectorNumber_VReserved76 76 #define VectorNumber_VReserved75 75 #define VectorNumber_VReserved74 74 #define VectorNumber_VReserved73 73 #define VectorNumber_VReserved72 72 #define VectorNumber_VReserved71 71 #define VectorNumber_VReserved70 70 #define VectorNumber_Vpit3 69 #define VectorNumber_Vpit2 68 #define VectorNumber_Vpit1 67 #define VectorNumber_Vpit0 66 #define VectorNumber_Vhti 65 #define VectorNumber_Vapi 64 #define VectorNumber_Vlvi 63 #define VectorNumber_VReserved62 62 #define VectorNumber_VReserved61 61 #define VectorNumber_VReserved60 60 #define VectorNumber_VReserved59 59 #define VectorNumber_VReserved58 58 #define VectorNumber_Vpwmesdn 57 #define VectorNumber_Vportp 56 #define VectorNumber_VReserved55 55 #define VectorNumber_VReserved54 54 #define VectorNumber_VReserved53 53 #define VectorNumber_VReserved52 52 #define VectorNumber_VReserved51 51 #define VectorNumber_VReserved50 50 #define VectorNumber_VReserved49 49 #define VectorNumber_VReserved48 48 #define VectorNumber_VReserved47 47 #define VectorNumber_VReserved46 46 #define VectorNumber_VReserved45 45 #define VectorNumber_VReserved44 44 #define VectorNumber_VReserved43 43 #define VectorNumber_VReserved42 42 #define VectorNumber_VReserved41 41 #define VectorNumber_VReserved40 40 #define VectorNumber_Vcan0tx 39 #define VectorNumber_Vcan0rx 38 #define VectorNumber_Vcan0err 37 #define VectorNumber_Vcan0wkup 36 #define VectorNumber_Vflash 35 #define VectorNumber_Vflashfd 34 #define VectorNumber_VReserved33 33 #define VectorNumber_VReserved32 32 #define VectorNumber_VReserved31 31 #define VectorNumber_VReserved30 30 #define VectorNumber_Vcrgscm 29 #define VectorNumber_Vcrgplllck 28 #define VectorNumber_VReserved27 27 #define VectorNumber_VReserved26 26 #define VectorNumber_Vporth 25 #define VectorNumber_Vportj 24 #define VectorNumber_VReserved23 23 #define VectorNumber_Vatd0 22 #define VectorNumber_Vsci1 21 #define VectorNumber_Vsci0 20 #define VectorNumber_Vspi0 19 #define VectorNumber_Vtimpaie 18 #define VectorNumber_Vtimpaaovf 17 #define VectorNumber_Vtimovf 16 #define VectorNumber_Vtimch7 15 #define VectorNumber_Vtimch6 14 #define VectorNumber_Vtimch5 13 #define VectorNumber_Vtimch4 12 #define VectorNumber_Vtimch3 11 #define VectorNumber_Vtimch2 10 #define VectorNumber_Vtimch1 9 #define VectorNumber_Vtimch0 8 #define VectorNumber_Vrti 7 #define VectorNumber_Virq 6 #define VectorNumber_Vxirq 5 #define VectorNumber_Vswi 4 #define VectorNumber_Vtrap 3 #define VectorNumber_Vcop 2 #define VectorNumber_Vclkmon 1 #define VectorNumber_Vreset 0 /**************** interrupt vector table ****************/ #define Vsi 0x0000FF10 #define Vsyscall 0x0000FF12 #define VReserved118 0x0000FF14 #define VReserved117 0x0000FF16 #define VReserved116 0x0000FF18 #define VReserved115 0x0000FF1A #define VReserved114 0x0000FF1C #define VReserved113 0x0000FF1E #define VReserved112 0x0000FF20 #define VReserved111 0x0000FF22 #define VReserved110 0x0000FF24 #define VReserved109 0x0000FF26 #define VReserved108 0x0000FF28 #define VReserved107 0x0000FF2A #define VReserved106 0x0000FF2C #define VReserved105 0x0000FF2E #define VReserved104 0x0000FF30 #define VReserved103 0x0000FF32 #define VReserved102 0x0000FF34 #define VReserved101 0x0000FF36 #define VReserved100 0x0000FF38 #define VReserved99 0x0000FF3A #define VReserved98 0x0000FF3C #define Vatd0compare 0x0000FF3E #define VReserved96 0x0000FF40 #define VReserved95 0x0000FF42 #define VReserved94 0x0000FF44 #define VReserved93 0x0000FF46 #define VReserved92 0x0000FF48 #define VReserved91 0x0000FF4A #define VReserved90 0x0000FF4C #define VReserved89 0x0000FF4E #define VReserved88 0x0000FF50 #define VReserved87 0x0000FF52 #define VReserved86 0x0000FF54 #define VReserved85 0x0000FF56 #define VReserved84 0x0000FF58 #define VReserved83 0x0000FF5A #define VReserved82 0x0000FF5C #define VReserved81 0x0000FF5E #define VReserved79 0x0000FF60 #define VReserved78 0x0000FF62 #define VReserved77 0x0000FF64 #define VReserved76 0x0000FF66 #define VReserved75 0x0000FF68 #define VReserved74 0x0000FF6A #define VReserved73 0x0000FF6C #define VReserved72 0x0000FF6E #define VReserved71 0x0000FF70 #define VReserved70 0x0000FF72 #define Vpit3 0x0000FF74 #define Vpit2 0x0000FF76 #define Vpit1 0x0000FF78 #define Vpit0 0x0000FF7A #define Vhti 0x0000FF7C #define Vapi 0x0000FF7E #define Vlvi 0x0000FF80 #define VReserved62 0x0000FF82 #define VReserved61 0x0000FF84 #define VReserved60 0x0000FF86 #define VReserved59 0x0000FF88 #define VReserved58 0x0000FF8A #define Vpwmesdn 0x0000FF8C #define Vportp 0x0000FF8E #define VReserved55 0x0000FF90 #define VReserved54 0x0000FF92 #define VReserved53 0x0000FF94 #define VReserved52 0x0000FF96 #define VReserved51 0x0000FF98 #define VReserved50 0x0000FF9A #define VReserved49 0x0000FF9C #define VReserved48 0x0000FF9E #define VReserved47 0x0000FFA0 #define VReserved46 0x0000FFA2 #define VReserved45 0x0000FFA4 #define VReserved44 0x0000FFA6 #define VReserved43 0x0000FFA8 #define VReserved42 0x0000FFAA #define VReserved41 0x0000FFAC #define VReserved40 0x0000FFAE #define Vcan0tx 0x0000FFB0 #define Vcan0rx 0x0000FFB2 #define Vcan0err 0x0000FFB4 #define Vcan0wkup 0x0000FFB6 #define Vflash 0x0000FFB8 #define Vflashfd 0x0000FFBA #define VReserved33 0x0000FFBC #define VReserved32 0x0000FFBE #define VReserved31 0x0000FFC0 #define VReserved30 0x0000FFC2 #define Vcrgscm 0x0000FFC4 #define Vcrgplllck 0x0000FFC6 #define VReserved27 0x0000FFC8 #define VReserved26 0x0000FFCA #define Vporth 0x0000FFCC #define Vportj 0x0000FFCE #define VReserved23 0x0000FFD0 #define Vatd0 0x0000FFD2 #define Vsci1 0x0000FFD4 #define Vsci0 0x0000FFD6 #define Vspi0 0x0000FFD8 #define Vtimpaie 0x0000FFDA #define Vtimpaaovf 0x0000FFDC #define Vtimovf 0x0000FFDE #define Vtimch7 0x0000FFE0 #define Vtimch6 0x0000FFE2 #define Vtimch5 0x0000FFE4 #define Vtimch4 0x0000FFE6 #define Vtimch3 0x0000FFE8 #define Vtimch2 0x0000FFEA #define Vtimch1 0x0000FFEC #define Vtimch0 0x0000FFEE #define Vrti 0x0000FFF0 #define Virq 0x0000FFF2 #define Vxirq 0x0000FFF4 #define Vswi 0x0000FFF6 #define Vtrap 0x0000FFF8 #define Vcop 0x0000FFFA #define Vclkmon 0x0000FFFC #define Vreset 0x0000FFFE

 


 

你可能感兴趣的:(编程,c,vector,测试,table,Numbers)