STM32-ADC內部溫度

?在通道16無引腳(測量溫度不準確)

跟ADC代碼差不多;不需要使能引腳時鐘;將內部溫度測量打開

/*** @brief  啟用或禁用溫度傳感器和內部參考電壓功能* @param  NewState: 新的功能狀態,取值為ENABLE或DISABLE* @retval 無* @note   溫度傳感器用于測量芯片溫度* @note   內部參考電壓用于提供穩定的參考電壓值*/
void ADC_TempSensorVrefintCmd(FunctionalState NewState)

?將通道改為通道16

代碼如下:

#include "adc_temp.h"
#include "SysTick.h"/*******************************************************************************
* 函 數 名         : ADC_Temp_Init
* 函數功能		   : ADC_Temp初始化函數
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void ADC_Temp_Init(void)
{	ADC_InitTypeDef       ADC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //分頻因子6時鐘為72M/6=12MHzADC_TempSensorVrefintCmd(ENABLE);//打開ADC內部溫度傳感器ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;	//ADC工作模式:ADC1和ADC2工作在獨立模式ADC_InitStructure.ADC_ScanConvMode = DISABLE;//非掃描模式	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//關閉連續轉換ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//禁止觸發檢測,使用軟件觸發ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//右對齊	ADC_InitStructure.ADC_NbrOfChannel = 1;	//1個轉換在規則序列中 也就是只轉換規則序列1 ADC_Init(ADC1, &ADC_InitStructure);//ADC初始化ADC_Cmd(ADC1, ENABLE);//開啟AD轉換器ADC_ResetCalibration(ADC1);//重置指定的ADC的校準寄存器while(ADC_GetResetCalibrationStatus(ADC1));//獲取ADC重置校準寄存器的狀態ADC_StartCalibration(ADC1);//開始指定ADC的校準狀態while(ADC_GetCalibrationStatus(ADC1));//獲取指定ADC的校準程序ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能或者失能指定的ADC的軟件轉換啟動功能
}/*******************************************************************************
* 函 數 名         : Get_ADC_Temp_Value
* 函數功能		   : 獲取通道ch的轉換值,取times次,然后平均 	
* 輸    入         : ch:通道編號times:獲取次數
* 輸    出         : 通道ch的times次轉換結果平均值
*******************************************************************************/
u16 Get_ADC_Temp_Value(u8 ch,u8 times)
{u32 temp_val=0;u8 t;//設置指定ADC的規則組通道,一個序列,采樣時間ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5);	//ADC1,ADC通道,239.5個周期,提高采樣時間可以提高精確度for(t=0;t<times;t++){ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能指定的ADC1的軟件轉換啟動功能	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待轉換結束temp_val+=ADC_GetConversionValue(ADC1);delay_ms(5);}return temp_val/times;
} /*******************************************************************************
* 函 數 名         : Get_Temperture
* 函數功能		   : 獲取溫度值 	
* 輸    入         : 無
* 輸    出         : 溫度值(擴大了100倍,單位:℃)
*******************************************************************************/
int Get_Temperture(void)
{u32 adc_value;int temp;float temperture;adc_value=Get_ADC_Temp_Value(ADC_Channel_16,10);	//讀取通道16內部溫度傳感器通道,10次取平均temperture=(float)adc_value*(3.3/4096);		//電壓值temperture=(1.43-temperture)/0.0043+25; //轉換為溫度值 temp=temperture*100;					//擴大100倍.return temp;
}

主函數代碼

#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart1.h"
#include "adc_temp.h"/*******************************************************************************
* 函 數 名         : main
* 函數功能		   : 主函數
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
int main()
{u8 i=0;int temp=0;SysTick_Init(72);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中斷優先級分組 分2組LED_Init();USART1_Init(115200);ADC_Temp_Init();while(1){i++;if(i%20==0){LED1=!LED1;}if(i%50==0){temp=Get_Temperture();if(temp<0){temp=-temp;printf("內部溫度檢測值為:-");}else{printf("內部溫度檢測值為:+");}printf("%.2f°C\r\n",(float)temp/100);}delay_ms(10);	}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88425.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88425.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88425.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

「Linux命令基礎」文本模式系統關閉與重啟

關機重啟基本命令 直接拔掉計算機電源可能損壞內部元件;Linux系統通過命令關閉計算機則是安全流程,讓所有程序有機會保存數據、釋放資源。 關機命令:shutdown Linux系統提供了多種用于關閉或重啟系統的命令,其中 shutdown 是最常用的一種,它可以安全地通知用戶系統即將…

射頻信號(大寬高比)時頻圖目標檢測anchors配置

一、大寬高比目標YOLO檢測參數設置 這是yolov7的一個label的txt文件&#xff1a; 1 0.500 0.201 1.000 0.091 2 0.500 0.402 1.000 0.150 3 0.500 0.604 1.000 0.093 0 0.500 0.804 1.000 0.217 對應的樣本&#xff1a; 長寬比分別是&#xff1a;1/0.09110.98, 1/0.1506.67…

OpenStack 鑒權服務介紹.md

引言 OpenStack是一個開源的云計算管理平臺&#xff0c;其中的Keystone組件承擔了身份認證和授權的關鍵任務。Keystone的主要功能包括管理用戶及其權限、維護OpenStack Services的Endpoint&#xff0c;以及實現認證&#xff08;Authentication&#xff09;和鑒權&#xff08;Au…

Linux_3:進程間通信

IPC1.什么是IPC&#xff1f;Inter Process Communication2.進程間通信常用的幾種方式1&#xff0c;管道通信&#xff1a;有名管道&#xff0c;無名管道2&#xff0c;信號- 系統開銷小3&#xff0c;消息隊列-內核的鏈表4&#xff0c;信號量-計數器5&#xff0c;共享內存6&#x…

【Springboot】Bean解釋

在 Spring Boot 中&#xff0c;Bean 就像是你餐廳里的一名員工。比如&#xff0c;你有一名服務員&#xff08;Service&#xff09;、一名廚師&#xff08;Chef&#xff09;和一名收銀員&#xff08;Cashier&#xff09;。這些員工都是餐廳正常運轉所必需的&#xff0c;他們各自…

axios的post請求,數據為什么要用qs處理?什么時候不用?

為什么使用 qs 處理 POST 數據axios 的 POST 請求默認將 JavaScript 對象序列化為 JSON 格式&#xff08;Content-Type: application/json&#xff09;。但某些后端接口&#xff08;尤其是傳統表單提交&#xff09;要求數據以 application/x-www-form-urlencoded 格式傳輸&…

【unitrix】 4.21 類型級二進制數基本結構體(types.rs)

一、源碼 這段代碼定義了一個類型級數值系統的 Rust 實現&#xff0c;主要用于在編譯時表示和操作各種數值類型。 use crate::sealed::Sealed; use crate::number::{NonZero, TypedInt, Unsigned, Primitive}; // // 特殊浮點值枚舉 ///// 特殊浮點值&#xff08;NaN/∞&#x…

UI前端與數字孿生結合實踐案例:智慧零售的庫存管理優化系統

hello寶子們...我們是艾斯視覺擅長ui設計和前端數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言&#xff1a;數字孿生重構零售庫存的 “人 - 貨 - 場” 協同在零售行業利潤率持續承壓的背景…

【Freertos實戰】零基礎制作基于stm32的物聯網溫濕度檢測(教程非常簡易)持續更新中.........

本次記錄采用Freertos的第二個DIY作品&#xff0c;基于Onenet的物聯網溫濕度檢測系統&#xff0c;此次代碼依然是全部開源。通過網盤分享的文件&#xff1a;物聯網溫濕度檢測.rar 鏈接: https://pan.baidu.com/s/1uj9UURVtGE6ZB6OsL2W8lw?pwdqm2e 提取碼: qm2e 大家也可以看看…

Matplotlib-多圖布局與網格顯示

Matplotlib-多圖布局與網格顯示一、多圖布局的核心組件二、基礎布局&#xff1a;plt.subplots()快速創建網格1. 均等分網格2. 不等分網格&#xff08;指定比例&#xff09;三、進階布局&#xff1a;GridSpec實現復雜嵌套1. 跨行列布局2. 嵌套GridSpec四、實用技巧&#xff1a;布…

GitHub上優秀的開源播放器項目介紹及優劣對比

ExoPlayer 項目地址:https://github.com/google/ExoPlayer 特點: 由Google開發,支持廣泛的視頻格式和流媒體傳輸協議,如DASH、HLS、SmoothStreaming。 提供靈活的媒體源架構和高級特性,如動態自適應流播放。 開發者可以輕松擴展和定制播放器組件,適應特定需求。 優點: 功…

react打包發到線上報錯Minified React error #130

開發過程中遇到一個問題&#xff0c;記錄一下 本地打包發布正常&#xff0c;發測試環境正常&#xff0c;可是通過Jenkins打包發布線上報錯 報錯信息 index-67fbbd81.js:39 Error: Minified React error #130; visit https://reactjs.org/docs/error-decoder.html?invariant130…

微服務項目遠程調用時的負載均衡是如何實現的?

負載均衡概述 負載均衡是微服務架構中的核心組件&#xff0c;用于將請求合理分配到多個服務實例上&#xff0c;提高系統的可用性和性能。負載均衡的分類 負載均衡大致可以分為兩類 1. 服務端負載均衡 實現位置&#xff1a;獨立部署的負載均衡服務器&#xff08;位于客戶端和服務…

【中文核心期刊推薦】中國農業科技導報

《中國農業科技導報》是中國科技核心期刊&#xff0c;也是北京大學圖書館“中文核心期刊要目總覽”收錄的期刊。它是由中國農村技術開發中心主辦&#xff0c;全面為科教興農服務的綜合性農業學術期刊。&#xfeff;《中國農業科技導報》是中國農業科學院生物技術研究所承辦的&a…

php 如何通過mysqli操作數據庫?

在PHP中&#xff0c;mysqli&#xff08;MySQL Improved Extension&#xff09;是操作MySQL數據庫的擴展庫&#xff0c;提供了面向對象和過程式兩種風格。以下是mysqli的基本操作方法&#xff1a; 1. 連接數據庫 面向對象風格 $mysqli new mysqli(localhost, username, passwor…

c/c++拷貝函數

memcpy()函數概要原型void * memcpy ( void * dest, const void * src, size_t num );功能memcpy()會復制 src 所指的內存內容的前 num 個字節到 dest所指的內存地址上&#xff08;memcpy()并不關心被復制的數據類型&#xff0c;只是逐字節地進行復制&#xff0c;這給函數的使用…

HTTP核心基礎詳解(附實戰要點)

目錄 一圖勝千言&#xff1a;HTTP核心機制圖解?編輯 一、HTTP本質&#xff1a;通信的橋梁 二、五大核心特性解析 三、HTTP頭部&#xff1a;隱藏的控制中心 四、連接管理&#xff1a;性能關鍵點 開發者必知實踐技巧 一圖勝千言&#xff1a;HTTP核心機制圖解 一、HTTP本質…

華為靜態路由配置

問題描述&#xff1a;針對兩臺筆記本和兩個路由器在不同的網段場景中&#xff0c;對兩個路由器進行靜態路由配置。下面以如下場景為例&#xff0c;介紹詳細配置過程。配置步驟&#xff1a; 1、對每個路由器的接口下配置IP地址 [huawei]interface gx/x/x [huawei-interface]ip a…

閑庭信步使用圖像驗證平臺加速FPGA的開發:第八課——圖像數據的行緩存

&#xff08;本系列只需要modelsim即可完成數字圖像的處理&#xff0c;每個工程都搭建了全自動化的仿真環境&#xff0c;只需要雙擊文件就可以完成整個的仿真&#xff0c;大大降低了初學者的門檻&#xff01;&#xff01;&#xff01;&#xff01;如需要該系列的工程文件請關注…

經典排序算法

文章目錄前言1. 排序的基本概念1.1 排序是什么&#xff1f;1.2 常見的排序算法概覽2. 常見排序算法的實現2.1 插入排序 (Insertion Sort)2.1.1 基本思想2.1.2 直接插入排序2.1.3 希爾排序 (Shell Sort)2.2 選擇排序 (Selection Sort)2.2.1 直接選擇排序2.2.2 堆排序 (Heap Sort…