Я подключаю LM35 к STM32, но по какой-то причине я получаю постоянное значение в регистре данных AD C даже после отключения датчика - PullRequest
0 голосов
/ 16 января 2020
#include "stm32f10x.h"

void ADC_Init(void);

void get_adc_val(void);

AD C буфер для хранения AD C значение регистра данных

int adc_buff;

int main()

{

Инициализация AD C

ADC_Init();

Чтение AD C

while(1)
{


get_adc_val();


}

return 0;   

}

AD C функция инициализации

void ADC_Init()

{

RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;   // ENabling the adc clock

RCC->CFGR|=RCC_CFGR_ADCPRE_DIV8;   // Prescaler/8 for ADC1

ADC1->SMPR2 |= (0b100<<0); //To select the sample time individually for each channel

Включение AD C

ADC1->CR2 |=ADC_CR2_ADON; 

ADC1->CR2 |= ADC_CR2_RSTCAL;  // Reset Calibration

while(ADC1->CR2 & (ADC_CR2_RSTCAL)); 

Использование калибровки

ADC1->CR2 |= ADC_CR2_CAL;

while(ADC1->CR2 & (ADC_CR2_CAL));


}

Функция для чтения значения AD C

 void get_adc_val()

{

ADC1->SQR3 = 1 ;     // STart conversion from channel 1

ADC1->CR2 |= ADC_CR2_CONT;  // ADC group regular continuous conversion mode

while(!(ADC1->SR & ADC_CR2_CONT));

Почему я получаю постоянное значение в регистре данных AD C, равное 0x42?

adc_buff=ADC1->DR;   // ADC data register

}
...