STM32H7最新版CUBEMX(6.5.0) ADC获取内部温度问题记录

在使用STM32H743VIT6芯片时,发现MCU发热严重。通过查阅手册决定通过ADC读取内部温度进行检查。使用CUBEMX配置ADC,但在校准阶段程序挂起。经过检查发现CUBEMX生成的代码缺少时钟初始化。补充时钟初始化代码后,成功读取到480MHz晶振下的温度数据。
摘要由CSDN通过智能技术生成

笔者使用STM32H743VIT6,完成所有功能之后,无意间手触摸到了MCU上,好家伙,怎么这么热呢,这不正常吧!!!(根据以往使用STM32芯片下意识想法)。于是查看了芯片手册,结温温度

 应该没多大问题,但是到底这个温度是多少呢?于是乎就想读取一下内部温度,想着就一个简单的ADC温度采集,也是测试代码,使用CUBEMX简单的配置一下就ok了,没想到,万万没想到载坑里了。

使用CUBEMX简单的配置完,编译,下载,一气呵成,程序直接就挂在了HAL_ADCEx_Calibration_Start(&hadc3, ADC_CALIB_OFFSET_LINEARITY, ADC_SINGLE_ENDED);温度校准都没过。不应该呀,这点配置也没什么难度呀。不可能过去不呀,难道是我cubemx某个参数设置错了导致的?于是乎又检查了一遍,还是不行。怎么办,从初始化一步步查。最终发现问题:

这是cubemx生成串口的代码:

这是cubemx生成ADC的代码:

 

 嘛呢?时钟初始化呢?自行加上相关代码。

void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
{
	
	RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
  if(adcHandle->Instance==ADC3)
  {
  /* USER CODE BEGIN ADC3_MspInit 0 */
	  PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADC;
    PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2;

    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
    {
      Error_Handler();
    }
  /* USER CODE END ADC3_MspInit 0 */
    /* ADC3 clock enable */
    __HAL_RCC_ADC3_CLK_ENABLE();
  /* USER CODE BEGIN ADC3_MspInit 1 */

  /* USER CODE END ADC3_MspInit 1 */
  }
}

编译,下载,手工。

这个是裸跑,晶振配置480MHZ的温度。

附上测试的代码传送门。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allensb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值