这两天在做一个SPWM逆变闭环测试,发现程序在RAM中运行没有问题,但是烧写到Flash中就不能正常运行了,针对这个问题,我查找了好多资料(心疼小白的我...),最终问题得以解决,现将解决思路分享出来,希望能够帮到和我有同样遭遇的同行~
首先,在TI的官方例程中,有 DELAY_US(); 这个函数,这是定义在RAM中的,在Flash中加载程序不将其复制到RAM中运行,则有可能造成上述问题以及程序跑飞...
在ADC初始化程序中,就有用到这个函数,因此要特别注意~
我的解决方法如下:注意ramfuncs中的配置
- 在F28335.cmd文件中配置如下
SECTIONS
{
/* Allocate program areas: */
.cinit : > FLASHC PAGE = 0
.pinit : > FLASHC, PAGE = 0
.text : > FLASHC PAGE = 0
codestart : > BEGIN PAGE = 0
ramfuncs : LOAD = FLASHD,
RUN = RAML0,
LOAD_START(_RamfuncsLoadStart),
LO