主题中讨论的其他器件:C2000WARE
最近、我发现使用仿真器在线执行相同的代码与在没有仿真器的情况下脱机执行代码不同。 这是 我 的代码。
图1.
图2.
如图1所示、函数指针在结构体的初始位置定义。 图2显示了如何在函数中初始化结构 、其中 LINE_STRTUCT_DEFALUTS 是宏定义、对应于(void (*)(void *)) LineCalc。 通过这种方式初始化函数指针后、我看到实际函数指针中的值仍然是0x00000000、而不是0x3EA0A6。 因此,在执行 aiLine.calc 之后,程序将跳转到非法 ISR。
稍后 、在我修改了如图3所示的函数指针初始化之后、程序正常运行。 因此可以说、在在线运行时进入非法中断的原因是初始化错误。
图3.
这是我的谜题! 使用原始函数指针初始化方法、在线运行将进入非法中断、但在离线运行时运行正常。 为什么?