2

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 计数器按应有的方式递增,这只是为什么没有分配内存位置的问题正如其流程所暗示的那样,以增量方式集成功能中的代码行。

这种不稳定行为的可能原因是什么?

4

0 回答 0