This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

使用StellarisWare配置PD7为AD口,这样对吗?

Other Parts Discussed in Thread: TM4C123GE6PZ

使用的是tm4c123ge6pz,需要配置100pin的PE0和PD7为ADC口,配置如下:

ADCIntRegister( ADC0_BASE , 0 , ADC0SS0Handler) ;

 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0) ;

 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE) ; //PE0/PE1/PE2
 ROM_GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_2 | GPIO_PIN_1 | GPIO_PIN_0);

 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); // PD7
 Delay_Us(10);
 HWREG(GPIO_PORTD_BASE+GPIO_O_LOCK)=GPIO_LOCK_KEY_DD;
 Delay_Us(10);
 HWREG(GPIO_PORTD_BASE+GPIO_O_CR)|=0x80;
 Delay_Us(10);
 HWREG(GPIO_PORTD_BASE+GPIO_O_LOCK)=0;
 Delay_Us(10);
 ROM_GPIOPinTypeADC(GPIO_PORTD_BASE, GPIO_PIN_7);

 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH ) ;  // PH3 and PH0
 ROM_GPIOPinTypeADC(GPIO_PORTH_BASE, GPIO_PIN_3 | GPIO_PIN_0);
 
 ROM_ADCReferenceSet(ADC0_BASE, ADC_REF_EXT_3V);

 ROM_ADCSequenceConfigure(ADC0_BASE , 0 , ADC_TRIGGER_ALWAYS , 0) ;

 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH1); //welding current
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 1, ADC_CTL_CH2); // wire speed set
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 2, ADC_CTL_CH4); // welding voltage set
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 3, ADC_CTL_CH0); // welding voltage
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 4, ADC_CTL_CH19); // mode select
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 5, ADC_CTL_CH16); // diameter select
 ROM_ADCSequenceStepConfigure(ADC0_BASE, 0, 6, ADC_CTL_CH0  | ADC_CTL_IE|ADC_CTL_END); // welding voltage
 
 ROM_ADCSequenceEnable(ADC0_BASE, 0);

 ROM_ADCIntClear(ADC0_BASE, 0);

 ADCIntEnable(ADC0_BASE, 0);

调整PD7口的电位器,发现会影响PE3/AN0的电压值,仔细验证后,排除了布线、电源、底线的干扰和原理性的错误,发现:断开开PD7的连接后,再调整电位器也不会影响PE3/AN0的采样值了。

希望能得到你们的支持,谢谢啦!