今天调试程序的时候遇到了一个预取指令中止。我想了半天也没想到哪里有问题,于是单步加断点调试....终于发现了问题所在:
void Uart1DealFunc(e_SvrCommandFunction cf){
void (*pFunc)();
switch(cf){
case READ_ALL_METER_CYCLE:
pFunc = ReadAllMeterCycle;
break;
...
...
default:
break;
}
pFunc();
}
由于我定义了一个函数指针,但是在default里面没有对函数指针赋以有意义的值,结果,遇到default情况的话,pFun指向的地址就未知了,当然就预取中止了。