我们正在阅读STM32-F410 RB- NUCLEO 64板的内部温度传感器读数。
问题:
按照编程,每隔1秒读取一次温度传感器阅读,但获得的读数相同。只有在重置完成时,温度阅读才会更新
当前设置
- Windows 10 64位
- STM32 Nucleo 64 - F410RB
1.使用CubeMX IDE - PuTTy用于串行监测
STM32 CUBE MX IDE配置完成
1.系统内核-串行线
1.模拟-ADC 1使能温度传感器通道
参数设置- ADC设置-扫描转换和连续转换启用秩-采样时间- 480个周期
- USART 2 - 9600波特率
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);
}
}
请帮帮忙。先谢了。
1条答案
按热度按时间s6fujrry1#
循环外只有一个
HAL_ADC_Start
。因此,转换仅开始一次。在循环中,您只是重复接收
HAL_ADC_GetValue
转换的最后结果。您需要通过每次调用
HAL_ADC_Start
开始常规的组转换,然后等待转换到HAL_ADC_PollForConversion
结束,最后通过HAL_ADC_GetValue
获得结果