We are reading Internal Temperature Sensor reading of STM32-F410RB - NUCLEO 64 Board.
Problem:
Getting the reading of Temperature sensor every 1 second as programmed, but the same readings are got. Only when Reset is done, the Temperature Reading get updated
Current Setup
STM32 CUBE MX IDE Configurations Done
CODE Snippet of Main
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_ADC1_Init();
HAL_ADC_Start(&hadc1);
while (1)
{
uint16_t readValue;
float tCelsius;
readValue = HAL_ADC_GetValue(&hadc1);
tCelsius = ((float)readValue) * 3300.0 / 4095.0; // To mV
tCelsius = (tCelsius - 500.0) / 10.0; // To degrees C
UART_SEND_TXT(&huart2, "Temperature = ", 0);
UART_SEND_FLT(&huart2, tCelsius, 1);
HAL_Delay(1000);
}
}
Please kindly help. Thanks in Advance.
There is only one HAL_ADC_Start
outside the loop. Therefore conversion starts only once.
Inside the loop you just repeatedly receive the last result of the conversion by HAL_ADC_GetValue
.
You need to start regular group conversion by calling HAL_ADC_Start
each time, then wait conversion to end by HAL_ADC_PollForConversion
and, at last, get the result by HAL_ADC_GetValue