主题中讨论的其他器件:C2000WARE、
工具/软件:Code Composer Studio
大家好、
我在闪存上操作应用程序代码时遇到问题。
我现在使用 ADC、ePWM1A、eQEP、SCI、I2C 和 F28035的内部振荡器来生成 CPU 时钟。
我的应用程序代码在 SARAM 中加载此应用程序代码时运行良好、但在加载到闪存中时、代码运行不良。
在调试过程中,我可以确定有一个从 InitSysCtrl()函数到 InitAdc()函数的循环。
InitSysCtrl()的操作完成后,运行了 Next 函数,然后运行了 InitAdc();。
但是,在 InitADC()函数的操作完成后,InitSysCtrl()函数再次运行并无限执行上述序列。 ——它被环住了!
和"SysCtrlRegs.PLLSTS.bit.DIVSEL"保持从0更改为2或从2更改为0、并且我为存储 ADC 值声明的数组不稳定。 这些值更改为无法预测的值。 (当此应用程序代码被加载到 SARAM 中然后被执行时、它实现了稳定的值。)
这里是我又注意到的情况。
在 InitAdc()函数中,有(* Device_cal)()函数。 完成此函数后、它没有转到下一条指令行。 相反,InitSysCtrl()函数再次运行。
总结一下我到目前为止所说的话、
当我的应用程序加载到闪存中然后执行时、包括 PLL 设置在内的整个系统会变得严重不稳定。 但当加载到 SARAM 中时、它的运行情况非常好。
但以上问题只是我所经历的整个问题的一部分。
有时它没有恢复、或者我收到消息"0x3ff8a1"没有可用的源
我想这些问题有两个相关的方面。
第一个原因是振荡器运行应用程序代码的速度相当慢、或者闪存运行速度太慢。
其次是因为 Linker cmd 文件配置不是很好。
英语不是我的母语,所以我知道你很难找到我的观点。 如果有一些事情让您感到困惑、我很乐意回答您的问题。
如果我能得到你的帮助和支持,我将不胜感激。