C语言 STM32的内部温度传感器阅读仅在复位后更新

bnlyeluc  于 2023-06-05  发布在  其他
关注(0)|答案(1)|浏览(140)

我们正在阅读STM32-F410 RB- NUCLEO 64板的内部温度传感器读数。

问题:

按照编程,每隔1秒读取一次温度传感器阅读,但获得的读数相同。只有在重置完成时,温度阅读才会更新

当前设置

  1. Windows 10 64位
  2. STM32 Nucleo 64 - F410RB
    1.使用CubeMX IDE
  3. PuTTy用于串行监测

STM32 CUBE MX IDE配置完成

1.系统内核-串行线
1.模拟-ADC 1使能温度传感器通道
参数设置- ADC设置-扫描转换和连续转换启用秩-采样时间- 480个周期

  1. 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);
  }
}

请帮帮忙。先谢了。

s6fujrry

s6fujrry1#

循环外只有一个HAL_ADC_Start。因此,转换仅开始一次。
在循环中,您只是重复接收HAL_ADC_GetValue转换的最后结果。
您需要通过每次调用HAL_ADC_Start开始常规的组转换,然后等待转换到HAL_ADC_PollForConversion结束,最后通过HAL_ADC_GetValue获得结果

相关问题