我准备使用中断向量表重映射功能,映射到0X7E00- 0X7EFF 区域,并定义了一个函数指针的结构体类型vect_tab,然后用vect_tab定义了一个中断向量表:const vect_tab appl_vect_tab ,但是为什么函数指针编译下来是3个字节啊? 中断向量的地址应该是2字节的。我已经把中断向量表这样写了#pragma CODE_SEG NON_BANKED。 typedef const struct { /* 0x__10 */ void(* spurious_int)(void); //sizeof(appl_vect_tab.spurious_int) = 3 /* 0x---- */ void(* reserved1[39])(void); //DATASHEET 中保留区域 /* 0x__60 */ void(* ram_acc_vlt)(void); /* 0x__62 */ void(* xg_sw_err)(void); /* 0x__64 */ void(* xg_sw_trg7)(void); /* 0x__66 */ void(* xg_sw_trg6)(void); /* 0x__68 */ void(* xg_sw_trg5)(void); /* 0x__6A */ void(* xg_sw_trg4)(void); /* 0x__6C */ void(* xg_sw_trg3)(void); /* 0x__6E */ void(* xg_sw_trg2)(void); /* 0x__70 */ void(* xg_sw_trg1)(void); /* 0x__72 */ void(* xg_sw_trg0)(void); /* 0x__74 */ void(* prd_inttimer_chl3)(void); /* 0x__76 */ void(* prd_inttimer_chl2)(void); /* 0x__78 */ void(* prd_inttimer_chl1)(void); /* 0x__7A */ void(* prd_inttimer_chl0)(void); ... ... }vect_tab, *vect_tab_handle; #pragma CODE_SEG NON_BANKED /* 117 vectors, occupy 351 bytes */ const vect_tab appl_vect_tab = { /* 0x__10 */ NULL, /* 0x____ */ { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL }, /* 0x__60 */ NULL, /* 0x__62 */ NULL, /* 0x__64 */ NULL, /* 0x__66 */ NULL, /* 0x__68 */ NULL, /* 0x__6A */ NULL, /* 0x__6C */ NULL, /* 0x__6E */ NULL, /* 0x__70 */ NULL, /* 0x__72 */ NULL, /* 0x__74 */ NULL, /* 0x__76 */ NULL, /* 0x__78 */ NULL, /* 0x__7A */
&timer0_isr, ... ... } #pragma CODE_SEG DEFAULT
[此贴子已经被作者于2009-3-27 17:09:07编辑过] |