笔者使用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的温度。