typedef struct { void (*calc)(); // 函数指针 } DO_FUNC_CAL; const DO_FUNC_CAL doFuncCal[DO_FUNC_NUMBER] = { DoutRSVD, Dout1, Dout2, Dout3, Dout4, Dout5, Dout6, Dout7, Dout8, Dout9, Dout10, Dout11, Dout12, Dout13, Dout14, Dout15, Dout16, DoutRSVD, Dout18, Dout19, Dout20, Dout21, Dout22, Dout23, Dout24, Dout25, Dout26, Dout27, Dout28, Dout29, Dout30, Dout31, Dout32, Dout33, Dout34, Dout35, Dout36, Dout37, Dout38, }; 运行此条语句时 doFuncCal[fc].calc(); 直接跳进HardFault_Handler,貌似这个写法没有问题吧,DSP里这么用的,换到了STM32就不行了? |
看你是固定值,还是函数名?
如果不注意Thumb2模式,值肯定错了
DO_FUNC_NUMBER是固定值,39
每次复位重新走到此条语句就出问题了
评分
查看全部评分
是的,应该对数组序号进行限制
是的,这类问题大部分是数组越界,野指针访问导致的