程序问题
DSP程序全速运行后跑到: .def _DSP28x_usDelay.sect "ramfuncs"
.global__DSP28x_usDelay
_DSP28x_usDelay:
SUB ACC,#1
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
LRETR
停留在SUB ACC,#1,一直在循环这句。 __DSP28x_usDelay
在哪调用的,上下文呢? void Init_Adc(Uint16 AdcClk,Uint16 AcqTime,Uint16 SampleSum)
{
EALLOW; //允许写保护区
PieVectTable.ADCINT = &Adc_ISR;
PieCtrlRegs.PIEIER1.bit.INTx6 = 1; // 使能PIE INT1.6 = ADCINT中断
AdcRegs.ADCTRL1.all = 0x0; //复位ADC模块
AdcRegs.ADCTRL3.bit.ADCCLKPS=AdcClk; //ADC时钟分频CLK=HSPCLK/AdcClk
AdcRegs.ADCTRL1.bit.CPS=1; //预分频,F=CLK/2
AdcRegs.ADCTRL1.bit.ACQ_PS=AcqTime; //ADC转换周期
// ADC_SAMPLING_MODE == SEQUENTIAL
AdcRegs.ADCTRL1.bit.SEQ_CASC=0x1; //级联模式
AdcRegs.ADCTRL3.bit.SMODE_SEL = 0; //0:顺序采样模式,1:连续采样模式
AdcRegs.ADCMAXCONV.all = 0x00;
// AdcRegs.ADCCHSELSEQ1.bit.CONV00=0x0;
AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x1;
// AdcRegs.ADCCHSELSEQ1.bit.CONV02=0x2;
/*AdcRegs.ADCCHSELSEQ1.all=0x3210; //转换顺序,0-1-2-3-4-5-6-7-8-9-a-b-c-d-e-f
AdcRegs.ADCCHSELSEQ2.all=0x9854;
AdcRegs.ADCCHSELSEQ3.all=0=0xba76;
AdcRegs.ADCCHSELSEQ4.all=0xfedc;*/
// AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 0;// disable EVASOC to start SEQ1
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt (every EOS)
AdcRegs.ADCTRL1.bit.CONT_RUN=1; //Enable continuous Run
AdcRegs.ADCREFSEL.all=0; //设置使用内部参考电压
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; //开Adc时钟
ADC_cal();
// AdcRegs.ADCTRL3.all = 0x00E0;
// DSP28x_usDelay(ADC_usDELAY);
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry
// AdcRegs.ADCTRL3.bit.EXTREF; //??????????????
DSP28x_usDelay(ADC_usDELAY); //ADC上电复位前延时
AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // 复位ADC
DSP28x_usDelay(ADC_usDELAY); // ADC复位后延时
EDIS; //禁止写保护区
StartAdc();
}
在此调用的,求解决,辛苦了。 ADC_usDELAY值是多少? 不知道帮忙顶
页:
[1]