我想把TI controlsuit上28035的例程移植到2802x系列上来,就从ti官网上下了SPR832.zip来安装了2802x系列的例程,选了epwm_deadband这个例程来移植,有用到一个宏定义
ADC_MACRO_INIT();
#define ADC_MACRO_INIT()                                                                                                                                                \
                                                                                                                                                                                                \
DELAY_US(ADC_usDELAY);                                                                                                                                                        \
    AdcRegs.ADCCTL1.all=ADC_RESET_FLAG;                                                                                                                        \
        asm(" NOP ");                                                                                                                                                                \
        asm(" NOP ");                                                                                                                                                            \
                                                                                                                                                                                                \
        EALLOW;                                                                                                                                                                                \
         AdcRegs.ADCCTL1.bit.ADCBGPWD        = 1;        /* Power up band gap */                                                                \
                                                                                                                                                                                                \
        DELAY_US(ADC_usDELAY);                                        /* Delay before powering up rest of ADC */                        \
                                                                                                                                                                                                \
        AdcRegs.ADCCTL1.bit.ADCREFSEL        = 0;                                                                                                                \
           AdcRegs.ADCCTL1.bit.ADCREFPWD        = 1;        /* Power up reference */                                                        \
           AdcRegs.ADCCTL1.bit.ADCPWDN         = 1;        /* Power up rest of ADC */                                                        \
        AdcRegs.ADCCTL1.bit.ADCENABLE        = 1;        /* Enable ADC */                                                                        \
                                                                                                                                                                                                \
        asm(" RPT#100 || NOP");                                                                                                                                                \
                                                                                                                                                                                                \
        AdcRegs.ADCCTL1.bit.INTPULSEPOS=1;                                                                                                                        \
        AdcRegs.ADCCTL1.bit.TEMPCONV=0;                                                                                                                                \
                                                                                                                                                                                                \
        DELAY_US(ADC_usDELAY);                                                                                                                                                \
                                                                                                                                                                                                \
        /******* CHANNEL SELECT *******/                                                                                                                        \
                                                                                                                                                                                                \
        AdcRegs.ADCSOC0CTL.bit.CHSEL         = 9;        /*Dummy meas. avoid 1st sample issue Rev0 Picollo*/        \
        AdcRegs.ADCSOC0CTL.bit.TRIGSEL  = 5;                                                                                                                \
        AdcRegs.ADCSOC0CTL.bit.ACQPS         = 6;                                                                                                                \
                                                                                                                                                                                                \
        AdcRegs.ADCSOC1CTL.bit.CHSEL         = 12;        /* ChSelect: ADC B4-> Phase A Current */                        \
        AdcRegs.ADCSOC1CTL.bit.TRIGSEL  = 5;        /* Set SOC0 start trigger on EPWM1A */                                \
        AdcRegs.ADCSOC1CTL.bit.ACQPS         = 6;         /* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */        \
                                                                                                                                                                                                \
        AdcRegs.ADCSOC2CTL.bit.CHSEL         = 14;        /* ChSelect: ADC B6-> Phase B Current */                        \
        AdcRegs.ADCSOC2CTL.bit.TRIGSEL  = 5;                                                                                                                \
        AdcRegs.ADCSOC2CTL.bit.ACQPS         = 6;                                                                                                                \
                                                                                                                                                                                                \
        AdcRegs.ADCSOC3CTL.bit.CHSEL         = 1;        /* ChSelect: ADC A1-> DC Bus Voltage */                                \
        AdcRegs.ADCSOC3CTL.bit.TRIGSEL  = 5;                                                                                                                \
        AdcRegs.ADCSOC3CTL.bit.ACQPS         = 6;                                                                                                                \
                                                                                                                                                                                                \
        AdcRegs.ADCSOC4CTL.bit.CHSEL         = 11;        /* ChSelect: ADC B3-> V Phase A */                                        \
        AdcRegs.ADCSOC4CTL.bit.TRIGSEL         = 5;                                                                                                                \
        AdcRegs.ADCSOC4CTL.bit.ACQPS         = 6;                                                                                                                 \
                                                                                                                                                                                                \
        AdcRegs.ADCSOC5CTL.bit.CHSEL         = 10;        /* ChSelect: ADC B2-> V Phase B */                                        \
        AdcRegs.ADCSOC5CTL.bit.TRIGSEL  = 5;                                                                                                                \
        AdcRegs.ADCSOC5CTL.bit.ACQPS         = 6;                                                                                                                \
                                                                                                                                                                                                \
        AdcRegs.ADCSOC6CTL.bit.CHSEL         = 9;        /* ChSelect: ADC B1-> V Phase C */                                        \
        AdcRegs.ADCSOC6CTL.bit.TRIGSEL  = 5;                                                                                                                \
        AdcRegs.ADCSOC6CTL.bit.ACQPS         = 6;                                                                                                                \
                                                                                                                                                                                                \
        AdcRegs.ADCSOC7CTL.bit.CHSEL         = 4;    /* ChSelect: ADC A4-> Low Side DC Bus Return Cur.*/        \
        AdcRegs.ADCSOC7CTL.bit.TRIGSEL         = 5;                                                                                                                \
        AdcRegs.ADCSOC7CTL.bit.ACQPS         = 6;                                                                                                                \
                                                                                                                                                                                                \
                                                                                                                                                                                           \
        EDIS;                                                                                                                                                                                \
                                                                                                                                                                                                \
                                                                                                                                                                                                \
    /* Set up Event Trigger with CNT_zero enable for Time-base of EPWM1 */                                                \
    EPwm1Regs.ETSEL.bit.SOCAEN = 1;     /* Enable SOCA */                                                                                \
    EPwm1Regs.ETSEL.bit.SOCASEL = 1;    /* Enable CNT_zero event for SOCA */                                        \
    EPwm1Regs.ETPS.bit.SOCAPRD = 1;     /* Generate SOCA on the 1st event */                                        \
        EPwm1Regs.ETCLR.bit.SOCA = 1;       /* Clear SOCA flag */
里面有调用 DELAY_US(ADC_usDELAY);       
#define DELAY_US(A)  DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L)
DSP28x_usDelay()是在 DSP28x_usDelay.asm文件中定义,这段程序被定义在ram(0x008000)里执行,0x008012后,显示no source available for 0x008012,汇编里面继续单步会跑飞会跑到.text的最后面,谁知道的能帮在下一下啊,不甚感激 |