AD配置: #define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \
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 = ChSel[0]; \
AdcRegs.ADCSOC1CTL.bit.CHSEL = ChSel[1]; \
AdcRegs.ADCSOC2CTL.bit.CHSEL = ChSel[2]; \
AdcRegs.ADCSOC3CTL.bit.CHSEL = ChSel[3]; \
AdcRegs.ADCSOC4CTL.bit.CHSEL = ChSel[4]; \
AdcRegs.ADCSOC5CTL.bit.CHSEL = ChSel[5]; \
AdcRegs.ADCSOC6CTL.bit.CHSEL = ChSel[6]; \
AdcRegs.ADCSOC7CTL.bit.CHSEL = ChSel[7]; \
AdcRegs.ADCSOC8CTL.bit.CHSEL = ChSel[8]; \
AdcRegs.ADCSOC9CTL.bit.CHSEL = ChSel[9]; \
AdcRegs.ADCSOC10CTL.bit.CHSEL = ChSel[10]; \
AdcRegs.ADCSOC11CTL.bit.CHSEL = ChSel[11]; \
AdcRegs.ADCSOC12CTL.bit.CHSEL = ChSel[12]; \
AdcRegs.ADCSOC13CTL.bit.CHSEL = ChSel[13]; \
AdcRegs.ADCSOC14CTL.bit.CHSEL = ChSel[14]; \
AdcRegs.ADCSOC15CTL.bit.CHSEL = ChSel[15]; \
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = Trigsel[0]; /* Set SOC0 start trigger on EPWM1A */ \
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = Trigsel[1]; \
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = Trigsel[2]; \
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = Trigsel[3]; \
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = Trigsel[4]; \
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = Trigsel[5]; \
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = Trigsel[6]; \
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = Trigsel[7]; \
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = Trigsel[8]; \
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = Trigsel[9]; \
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = Trigsel[10]; \
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = Trigsel[11]; \
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = Trigsel[12]; \
AdcRegs.ADCSOC13CTL.bit.TRIGSEL = Trigsel[13]; \
AdcRegs.ADCSOC14CTL.bit.TRIGSEL = Trigsel[14]; \
AdcRegs.ADCSOC15CTL.bit.TRIGSEL = Trigsel[15]; \
AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];/* Set SOC0 S/H Window to 6+1 ADC Clock Cycles */ \
AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1]; \
AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2]; \
AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3]; \
AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4]; \
AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5]; \
AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6]; \
AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7]; \
AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8]; \
AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9]; \
AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10]; \
AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11]; \
AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12]; \
AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13]; \
AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14]; \
AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15]; \
EDIS; \
初始化后为何ad就一直在转换。
AdcRegs.ADCSOCFRC1.all = 0x00FF;
while(AdcRegs.ADCSOCFLG1.all != 0){};
软件触发,我在while前设置了个断点,看了一下寄存器,ADCSOCFRC1寄存器并没有被置1