配置好ADC后调用ADCProcessorTrigger,然后观察ADC_PSSI的值,发现ADC_PSSI始终为零,
直接用HWREG(ADC0_BASE+ADC_0_PSSI) 来写寄存器ADC_PSSI的值依然为零,
配置ADC的函数为:
void InitADC()
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
GPIOPinTypeADC(GPIO_PORTD_BASE,GPIO_PIN_2);
ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0);
ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH0 | ADC_CTL_IE | ADC_CTL_END);
ADCReferenceSet(ADC0_BASE, ADC_REF_INT);
ADCClockConfigSet(ADC0_BASE, ADC_CLOCK_SRC_PLL | ADC_CLOCK_RATE_FULL, 24);
ADCIntEnable(ADC0_BASE,3);
IntEnable(INT_ADC0SS3_TM4C123);
IntMasterEnable();
ADCIntClear(ADC0_BASE,3);
ADCSequenceEnable(ADC0_BASE,3);
}
然后在main里的:
while(1)
{
// ADCProcessorTrigger(ADC0_BASE, 3);
HWREG(ADC0_BASE + ADC_0_PSSI) |= ((3 & 0xffff0000) | (1 << (3 & 0xf)));
while(!ADCIntStatus(ADC0_BASE, 3, false))
{
}
ADCIntClear(ADC0_BASE, 3);
ADCSequenceDataGet(ADC0_BASE, 3, Buffer);
SysCtlDelay(SysCtlClockGet() / 12);
}
启动采样
但是无论是运行ADCProcessorTrigger还是运行HWREG,ADC_PSSI的值都不会变化,再往后执行,则在
while(!ADCIntStatus(ADC0_BASE, 3, false))这一句跑飞
我认为问题应该出在ADCProcessorTrigger这一步上,
急求解答!
谢谢!