日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32H743+CubeMX-使用ADC(16bit分辨率)模数转换器读取CPU的温度(串行方式)

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32H743+CubeMX-使用ADC(16bit分辨率)模数转换器读取CPU的温度(串行方式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、前言
  • 二、CubeMX
    • 2.1、RCC
    • 2.2、SYS
    • 2.3、ADC
    • 2.4、Clock Configuration
  • 四、代碼
    • 4.1、adc.c
    • 4.2、adc.h
    • 4.3、main.h
    • 4.4、main.c
  • 五、DEBUG
    • 5.1、Debug (printf)Viewer
    • 5.2、觀察實時變量
  • 六、細節補充
    • 6.1、ADC的工作頻率注意事項

一、前言


CubeMX配置ADC的梳理筆記:STM32H743+CubeMX-梳理MPU的設置
STM32H743內部集成了一個溫度傳感器,可以使用ADC3_INP18通道測量CPU當前的溫度。

官方手冊提供計算公式,值得注意的是,該公式成立的條件是參考電壓為3.3V!!!!!!!!!!!!!
我使用的是硬石科技的H7開發板,外部參考電壓是3.3V。如果芯片的外部參考電壓是2.5V的話,我暫時也找不到方法計算MCU的溫度!!!!!!!!!!!!!

二、CubeMX


2.1、RCC

2.2、SYS

2.3、ADC


2.4、Clock Configuration


四、代碼


4.1、adc.c

函數void MX_ADC3_Init(void)下添加如下用戶代碼。

最后,在adc.c文件最底部編寫函數float get_CPU_Temperature(uint32_t Timeout)。

float get_CPU_Temperature(uint32_t Timeout) {uint16_t TS_CAL1;uint16_t TS_CAL2;HAL_ADC_Start(&hadc3); /* 啟動ADC3的轉換 */if(HAL_OK == HAL_ADC_PollForConversion(&hadc3,Timeout)) /* 等待ADC3的轉換,超時時間Timeout */{Temp_DC = HAL_ADC_GetValue(&hadc3);}else{printf("ADC Conversion failed! \n");}/* 根據參考手冊給的公式計算溫度值 */TS_CAL1 = *(__IO uint16_t *)(0x1FF1E820);TS_CAL2 = *(__IO uint16_t *)(0x1FF1E840);Temp_oC = ((110.0f - 30.0f) / (TS_CAL2 - TS_CAL1)) * (Temp_DC - TS_CAL1) + 30.0f;return Temp_oC; }

4.2、adc.h

4.3、main.h

4.4、main.c


五、DEBUG


5.1、Debug (printf)Viewer

順利獲取CPU的溫度信息。

5.2、觀察實時變量

六、細節補充


6.1、ADC的工作頻率注意事項

網絡上流傳著ADC的工作頻率不能超過80M,否則會不準。我認為大家可以注意一下這個問題。

總結

以上是生活随笔為你收集整理的STM32H743+CubeMX-使用ADC(16bit分辨率)模数转换器读取CPU的温度(串行方式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。