使用的是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的采样值了。
希望能得到你们的支持,谢谢啦!
Jacky Xu:
初步看下,程序没有问题。
当你发现PD7的调整会影响你采样得到的PE3电压值时,你同时用示波器万用表看过到底这个值是什么?有没有变动吗?
xyz549040622:
两个通道是独立的,不可能出现冲突的。除非硬件上有逻辑链接,不然肯定是不可能的。