xxdjx0206 发表于 2014-5-27 11:54

程序问题

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,一直在循环这句。

wangch_sh 发表于 2014-5-27 12:11

__DSP28x_usDelay
在哪调用的,上下文呢?

xxdjx0206 发表于 2014-5-27 14:41

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();
}
在此调用的,求解决,辛苦了。

wangch_sh 发表于 2014-5-27 17:34

ADC_usDELAY值是多少?

小木欧尼 发表于 2014-5-27 21:17

不知道帮忙顶
页: [1]
查看完整版本: 程序问题