Добрый день!
Процессор STM32F103c8t6.
Столкнулся с проблемой что по 16 каналу (TempSense) ADC1 значение не меняется, как процек не грей!
Код инициализации:
CODE
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);
/* Enable ADC1 */
ADC_Cmd(ADC1, ENABLE);
// Enable ADC1 reset calibration register
ADC_ResetCalibration(ADC1 );
// Check the end of ADC1 reset calibration register
while (ADC_GetResetCalibrationStatus(ADC1 ));
// Start ADC1 calibration
ADC_StartCalibration(ADC1 );
// Check the end of ADC1 calibration
while (ADC_GetCalibrationStatus(ADC1 ));
ADC_InitTypeDef ADC_InitStructure;
/* ADC1 configuration ------------------------------------------------------*/
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_TempSensorVrefintCmd(ENABLE);
/* ADC1 regular channels configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_239Cycles5 );
ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 7;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
Код запуска конвертирования (запускаем раз в секунду):
Код
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
Код прерывания:
Код
adcdata = ADC_GetConversionValue(ADC1);
adcVolt = adcdata*3.3/4096;
diffVolt = 0.76 - adcVolt;
temp1 = diffVolt / (2.5/1000);//0.00025;
temp2 = temp1 +25;
ADC_ClearITPendingBit(ADC1, ADC_IT_EOC );
adcdata постоянно равен 1738 +/- 10 едениц. Код тестировался на 2-3 процеках значения теже. Явно в коде, но что не пойму!