This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
在ADC模块驱动文件DSP2803x_Adc.c中有段话:
// *IMPORTANT*
// IF RUNNING FROM FLASH, PLEASE COPY OVER THE SECTION "ramfuncs" FROM FLASH
// TO RAM PRIOR TO CALLING InitSysCtrl(). THIS PREVENTS THE MCU FROM THROWING
// AN EXCEPTION WHEN A CALL TO DELAY_US() IS MADE.
难道DELAY_US不能在FLASH中运行?
Lzh,
首先,ramfuncs段中的内容我们都是要让它在RAM中跑的,里面包含一些flash的初始化设置函数,这些函数必须只能在RAM中运行,还有一些对时间比较敏感的函数,也是需要复制在RAM中运行的,因为RAM的速度远快于flash,我们通常讲的60MHz的执行速度,指的是去RAM的运行速度,flash一般只能跑到1/3的速度。
DELAY_US是1us的延时,它是基于RAM的速度来实现的精确的1us延时,如果把这段代码放在flash,由于flash的初始化等待状态不同,会导致flash执行速度不同,不能精确的得到1us的延时,只能是大于1us。
eric
采用何种方式来COPY呢?
不知道以下方法对不对
首先在DSP2803x_Examples.h文件中开始部分加入以下一条语句
#pragma CODE_SECTION(DSP28x_usDelay, "ramfuncs");
然后再main里面再加以下语句
memcpy((uint16_t *)&RamfuncsLoadStart,(uint16_t *)&RamfuncsRunStart, (unsigned long)&RamfuncsLoadSize);
InitFlash();