我是靠谱客的博主 老迟到鱼,最近开发中收集的这篇文章主要介绍STM32MP157实验(十一)——ADC(测量内部温度)设计需求一、基础知识二、硬件设计三、STM32CubeIDE开发运行结果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 设计需求
  • 一、基础知识
  • 二、硬件设计
  • 三、STM32CubeIDE开发
    • MX设置
    • 程序设计
    • 项目结构
  • 运行结果


设计需求

使用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
在这里插入图片描述

项目结构

在这里插入图片描述

运行结果

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

最后

以上就是老迟到鱼为你收集整理的STM32MP157实验(十一)——ADC(测量内部温度)设计需求一、基础知识二、硬件设计三、STM32CubeIDE开发运行结果的全部内容,希望文章能够帮你解决STM32MP157实验(十一)——ADC(测量内部温度)设计需求一、基础知识二、硬件设计三、STM32CubeIDE开发运行结果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部