STM32MP157实验(十一)——ADC(测量内部温度)


设计需求

使用ADC,获取芯片内部的温度


一、基础知识

STM32MP157可以通过ADC2的通道19设置为获取芯片内部温度


二、硬件设计

不涉及电路设计

三、STM32CubeIDE开发

MX设置

ADC有两个时钟方案:一个是来自adc_hclk(AHB时钟),一个是来自adc_ker_ck(ADC Kernel时钟)。两个时钟源独立且异步
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

程序设计

创建“ DemoDriver”目录,在里面新建“ driver_adc.c”,在该文件里调用“ HAL_ADC_Start()”启动
ADC,调用“ HAL_ADC_PollForConversion()”等待 ADC 转换结束,调用“ HAL_ADC_GetValue()”获取 ADC 的
结果,最后再将 ADC 值转换为温度值,转换公式在手册写有如下:
在这里插入图片描述
在这里插入图片描述
driver_adc.h

#ifndef DRIVER_ADC_H_
#define DRIVER_ADC_H_

#include "main.h"
#include "stm32mp1xx_hal.h"

extern ADC_HandleTypeDef hadc2;

int GetTemperatureValue(void);
#endif /* DRIVER_ADC_H_ */

driver_adc.c

#include "driver_adc.h"
#include "stm32mp1xx_hal_adc.h"

//获取ADC的采样到的内部温度

int GetTemperatureValue(void){
	uint16_t nData=0;
	int  nValue=0;

	HAL_ADC_Start(&hadc2);//开启ADC

	HAL_ADC_PollForConversion(&hadc2,100);//轮询查看转换是否完成
	//第二个参数表示超时时间,防止CPU卡死

	nData=HAL_ADC_GetValue(&hadc2);//获取采集数据的值
	//157的参考电压是3.3V;采样位是16bit
	nValue=__HAL_ADC_CALC_TEMPERATURE(3300UL,nData,ADC_RESOLUTION_16B);

	return nValue;


}

main.c
在这里插入图片描述

项目结构

在这里插入图片描述

运行结果

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jacky~~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值