TI中文支持网
TI专业的中文技术问题搜集分享网站

DSP2808 ADC在flash运行

DSP2808的ADC模块上电时有如下一段带有延时函数的程序,改程序在RAM中能正常运行,但在flash中运行每次执行延时函数都会进入非法中断,

AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry
DELAY_US(ADC_usDELAY); // Delay before powering up rest of ADC
AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC
DELAY_US(ADC_usDELAY2);

延时函数代码如下,是不是.sect "ramfuncs"这句话出问题了,请问在flash下这句话应该怎么改呢?谢谢

.def _DSP28x_usDelay
.sect "ramfuncs"

.global __DSP28x_usDelay
_DSP28x_usDelay:
SUB ACC,#1
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
LRETR

囧:

应该改成.text

DSP2808的ADC模块上电时有如下一段带有延时函数的程序,改程序在RAM中能正常运行,但在flash中运行每次执行延时函数都会进入非法中断,

AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry
DELAY_US(ADC_usDELAY); // Delay before powering up rest of ADC
AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC
DELAY_US(ADC_usDELAY2);

延时函数代码如下,是不是.sect "ramfuncs"这句话出问题了,请问在flash下这句话应该怎么改呢?谢谢

.def _DSP28x_usDelay
.sect "ramfuncs"

.global __DSP28x_usDelay
_DSP28x_usDelay:
SUB ACC,#1
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
LRETR

mangui zhang:

在flash中跑    怎么发现进入了非法中断了?

挂上仿真器    还是在RAM中跑的吧

DSP2808的ADC模块上电时有如下一段带有延时函数的程序,改程序在RAM中能正常运行,但在flash中运行每次执行延时函数都会进入非法中断,

AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry
DELAY_US(ADC_usDELAY); // Delay before powering up rest of ADC
AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC
DELAY_US(ADC_usDELAY2);

延时函数代码如下,是不是.sect "ramfuncs"这句话出问题了,请问在flash下这句话应该怎么改呢?谢谢

.def _DSP28x_usDelay
.sect "ramfuncs"

.global __DSP28x_usDelay
_DSP28x_usDelay:
SUB ACC,#1
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
LRETR

Young Hu:

回复 mangui zhang:

在main()里面加入memcopy()了么?

赞(0)
未经允许不得转载:TI中文支持网 » DSP2808 ADC在flash运行
分享到: 更多 (0)