主题中讨论的其他器件:C2000WARE、 TIDM-02011
大家好!
如标题所述、场景如下所述。
编译器版本:TI v22.6.0.LTS
C2000WARE 4.3.0.00
基于 flashapi_ex2_sciKernel 的引导加载程序代码。
引导加载程序代码 正常工作。
显示如下所示的复位代码:
... case FWork_goto_user_code: Interrupt_disable(INT_TIMER2); CPUTimer_disableInterrupt(ROUTINE_CPU_TIMER_INTERRUPT_TRIG_BASE); // // Reset with WatchDog Timeout // EALLOW; // // driverlib, Watchdog reset enable = WDENINT->0 and WDOVERRIDE->0 // SysCtl_setWatchdogMode(SYSCTL_WD_MODE_RESET); // // enable the Watchdog, driverlib; // same as HWREGH(WD_BASE + SYSCTL_O_WDCR) = SYSCTL_WD_CHKBITS; // SysCtl_enableWatchdog(); EDIS; jump_flag = 1; break; default: break; } if (jump_flag) { while (1) {} }
应用程序代码是我们的项目代码,它 在 MCU 设备初始函数后使用了 srand ()和 rand ()。
起初(首次上电)、一切顺利。
跳转到引导加载程序代码、然后再次跳转到应用程序代码后、MCU 停止运行。
或者 一开始(第一次上电)、 我使用 XRSn 引脚进行复位、MCU 也 停止。
或者 一开始(第一次上电)、我在跳转到引导加载程序后执行固件更新、然后 调用上面显示的代码 以让 MCU 软静止。
跳转至应用程序代码后、MCU 也停止。
调试了一段时间后、我发现了问题。
如下所示的暂停消息:
如果我删除了 srand()和 rand(),那么所有操作都 正常。
有什么建议可以解决吗? 如果需要、我可以提供其他信息。