这两天在做一个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),
LOAD_END(_RamfuncsLoadEnd),
DSP28335 Flash烧写问题及解决

在使用DSP28335进行SPWM逆变闭环测试时,程序在RAM运行正常,但烧录到Flash后无法正常运行。问题源于`DELAY_US()`函数,该函数在Flash中未正确复制到RAM。解决方案包括修改F28335.cmd文件配置,添加DSP2833x_CodeStartBranch.asm和DSP2833x_MemCopy.c文件,并在main函数中调用MemCopy()和InitFlash(),确保关键函数在RAM中执行。
最低0.47元/天 解锁文章
1634





