91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

程序員小哈
認(rèn)證:優(yōu)質(zhì)創(chuàng)作者
作者動(dòng)態(tài)
自動(dòng)洗碗機(jī)綜合實(shí)例第二講 - 最小系統(tǒng)核心板PCB繪制
2024-07-18 09:21
自動(dòng)洗碗機(jī)綜合實(shí)例第一講 - 最小系統(tǒng)核心板原理圖繪制
2024-07-16 09:40
線路板焊接的干貨都在這里呢
2024-07-14 12:08
基于單片機(jī)的智能風(fēng)扇DIY總結(jié)
2024-07-13 14:42
基于HAL庫(kù)實(shí)現(xiàn)按鍵(外部中斷)翻轉(zhuǎn)一個(gè)LED
2024-06-30 14:02

使用STM32CubeMX求得CPU芯片溫度

繼續(xù)完成后臺(tái)網(wǎng)友詢問(wèn):

如何使用STM32CubeMX設(shè)計(jì)代碼框架,然后實(shí)現(xiàn)CPU內(nèi)置溫度傳感器測(cè)量CPU芯片溫度,然后以串口輸出的形式輸出芯片的溫度值,數(shù)據(jù)更新周期1000ms。

STM32CubeMX工具的安裝及驅(qū)動(dòng)LED教程參見上一個(gè)網(wǎng)文:

4行代碼實(shí)現(xiàn)LED閃爍實(shí)現(xiàn)環(huán)境為:

  • STM32CubeMX Version 5.3.0
  • STM32F103C8T6最小系統(tǒng)板
  • PC13與板載LED相連

今天為了跟上節(jié)內(nèi)容有所不同,我們這次選用STM32F407VGT6芯片測(cè)試,STM32CubeMX的工程設(shè)置基本類似,具體實(shí)現(xiàn)如下。

實(shí)現(xiàn)目標(biāo):

  • STM32CubeMX創(chuàng)建工程及參數(shù)配置
  • 串口1實(shí)現(xiàn)printf輸出重定向
  • 求得CPU內(nèi)置溫度傳感器的值,其實(shí)就是求得ADC的值,然后將電壓值轉(zhuǎn)為溫度值

本文使用的STM32CubeMX版本為5.3.0:

創(chuàng)建工程及參數(shù)配置

  • 新建工程

  • 選擇對(duì)應(yīng)的MCU

  • 雙擊選擇的MCU,進(jìn)入配置界面:

配置RCC,使用外部晶振如圖所示:

SYS中要把SYS Mode中的Debug設(shè)置成 Serial Wire,如果是No Debug的話,可能第一次使用SWD下載之后,就不能二次下載程序了。

如果出現(xiàn)SWD模式不能下載的情況,可以嘗試按住復(fù)位鍵的情況下,下載固件。

  • 配置USART1,模式為異步,不使用硬件流控。

  • 配置ADC1的溫度傳感器通道

  • 時(shí)鐘樹配置參考下圖所示:

  • 工程設(shè)置:

  • 生成代碼

串口1實(shí)現(xiàn)printf輸出重定向

  • 打開Keil5工程:

  • usart.c文件中添加如下代碼:

  • main.c文件中添加引用的頭文件,注意添加位置。

添加代碼

  • 定義變量

其中,變量AD_Value為保存內(nèi)置溫度傳感器對(duì)應(yīng)ADC的AD值,變量temperate為保存當(dāng)前CPU芯片溫度。

  • 添加代碼

ADC值獲取的語(yǔ)句:

HAL_ADC_Start(&hadc1);
	  
HAL_ADC_PollForConversion(&hadc1,10);

if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))
{
    AD_Value = HAL_ADC_GetValue(&hadc1);
    temperate=(float)(AD_Value*3.3/4096);     //轉(zhuǎn)為電壓值
}

printf打印輸出結(jié)果的語(yǔ)句:

printf("AD_Value : %.2f V \r\n",temperate);
		
printf("MCU Temperature : %.1f度\r\n",temperate);

將電壓值轉(zhuǎn)為溫度值的語(yǔ)句:

temperate=(temperate-0.76)/0.0025+25;
  • 編譯,沒(méi)有錯(cuò)誤:

  • 配置JLINK下載程序方式為SW:

  • 點(diǎn)擊“Settings”設(shè)置如下:

  • 確定之后,點(diǎn)擊下面1處進(jìn)行工程編譯,然后點(diǎn)擊下圖2處進(jìn)行程序下載。

下載程序之后,重新上電,發(fā)現(xiàn)串口助手上有當(dāng)前電壓和轉(zhuǎn)化后的溫度值打印出來(lái)。

其實(shí)我們可以看到,利用單次獲取的ADC的值計(jì)算溫度,這個(gè)溫度值不是很穩(wěn)定,實(shí)際使用的時(shí)候,可以多次獲取電壓值,然后取平均值能稍微穩(wěn)定些。

這個(gè)溫度值僅適合作為內(nèi)核溫度的一個(gè)參考使用。

總結(jié)

至此,通過(guò)兩篇網(wǎng)文,分享了使用STM32CubeMX創(chuàng)建工程并獲取CPU芯片溫度的全部過(guò)程,大家可以照著做一下哈。

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 2
收藏 3
關(guān)注 69
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧
主站蜘蛛池模板: 信阳市| 衡水市| 新龙县| 临夏市| 固安县| 绩溪县| 望谟县| 温州市| 云龙县| 平乡县| 太保市| 家居| 乡城县| 奉节县| 龙陵县| 宁河县| 镇雄县| 天镇县| 德阳市| 沾益县| 肥乡县| 安陆市| 焦作市| 大悟县| 深圳市| 镇巴县| 密云县| 湖口县| 通海县| 当阳市| 苏尼特左旗| 博爱县| 本溪市| 南郑县| 镇赉县| 津市市| 上林县| 沾化县| 托克托县| 睢宁县| 辽阳市|