MCU:瑞萨 RX62N IDE:HEW
在我在工作区中集成了一个 SD 卡处理程序例程后,我遇到了一个奇怪的程序执行流程,该工作区以前按顺序运行。
对于函数
L1 : Void func(unint8_t arg)
L2 : {
L3 : static uint8_t testVar=0;
L4 :
L5 : testVar = arg;
L6 : testVar = (testVar/2) ;
L7 :
L8 : integratedFunction(&structureX);
L9 :
L10 : printf("/nTest Print/n");
L11 : }
L12 :
L13 : void integratedFunction(pSTRUCT pCard)
L14 : {
L15 : static uint32_t ulVariable = 100;
L16 : pCard->crdNo =0;
L17 : pCard->crdType = CARD_TYPE;
L18 :
L...: // other lines of assignment to update card structure
L26 : ulVariable--;
L27 :
L28 : }
L29 :
执行流程必须是从上到下的顺序。它必须到达 L1(第 1 行),依次到达 L5、L6、L8(然后是 L13、L16、L17...L26),最后到达 L10。
但我面临的问题是,在
integratedFunction();
被调用时,integratedFunction() 侧代码行的执行不是连续的。
当调用integratedFunction时,微控制器进入L13,然后直接跳转到L19,然后跳转到L16,然后跳转到L23,然后跳转到其他函数中的另一行...... [请注意,我使用E1调试器来找出这样的一种行为]。当 IntegratedFunction 单独单独测试时,它会按顺序执行。
另一件事,分配给代码行的内存位置与代码以随意方式执行的增量顺序相同,即 PC 计数器按应有的方式递增,这只是为什么没有分配内存位置的问题正如其流程所暗示的那样,以增量方式集成功能中的代码行。
这种不稳定行为的可能原因是什么?