stm32Cubemx实用篇(三):DAC电压输出和ADC电压检测以及内部温度传感器测温
stm32Cubemx实用篇(三):DAC电压输出和ADC电压检测以及内部温度传感器测温
本章将介绍使用stm32Cubemx软件配置DAC电压输出和ADC电压检测。最终将两个引脚连接起来通过一个ADC功能引脚测量另一个DAC输出引脚的电压。并通过串口打印出相应信息。
硬件平台:Stm32H743IIT6 软件:StmcubemxV6.0.1 、MDK5 cubemx下载地址: https://www.st.com/stm32cubemx
文章目录
- stm32Cubemx实用篇(三):DAC电压输出和ADC电压检测以及内部温度传感器测温
- 一、Cubemx工程配置
- 二、实验
- 1.ADC采集电压函数
- 2.主函数功能
- 三、内部温度传感器实验
- 1.参数设置
- 2.函数功能实现
提示:以下是本篇文章正文内容,下面案例可供参考
一、Cubemx工程配置
1、时钟配置
2、DAC设置
具体设置如下图所示:
3、ADC设置
这里需要注意的一点是:Sampling Time(采样周期)设置越长采集到的电压越准,同时耗费的时间越长。可以根据需要选择自己需要的周期。
具体设置如下图所示:
二、实验
1.ADC采集电压函数
需要注意的一点:打开ADC后不能立即读取,需要延时一段时间 ADC读取步骤: 1、打开ADC中断 2、延时一段时间 3、读取ADC值 4、停止ADC中断
代码如下(示例):
uint16_t Get_ADC_Value(ADC_HandleTypeDef hadc,uint8_t times)
{if(times>=30){return 0;}uint16_t adc_value_final=0;uint32_t adc_value=0;HAL_ADC_Start_IT(&hadc); //打开ADC1HAL_Delay(10); //打开ADC后不能立即读取,需要延时一段时间for(int i=0;i<times;i++){adc_value += HAL_ADC_GetValue(&hadc); }adc_value_final=(uint16_t)(adc_value/times);HAL_ADC_Stop_IT(&hadc); //关闭ADC1return adc_value_final;
}
2.主函数功能
这里在主函数增加了按键扫描函数,按键1每按下一次DAC输出电压就增加0.1V,按键2每按下一次DAC输出电压就减少0.1V。另外还增加了串口printf函数,打印出DAC输出电压和ADC读取到的电压值。
代码如下(示例):
key=KEYPRESS(); //按键扫描if(key==1)//按键1按下{if(temp<=3.2f){temp+=0.1f;HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,(uint32_t)(temp*4096/3.3f)); printf("Set Voltage:%d=%.1fV\n",(uint32_t)(temp*4096/3.3f),temp);} adc_value=Get_ADC_Value(hadc1,10);printf("ADCVALUE = %d, ADCVALUE(V) = %fV\r\n",adc_value,adc_value*3.3/65535); }if(key==2)//按键2按下{if(temp>=0.1f){HAL_DAC_SetValue(&hdac1,DAC_CHANNEL_1,DAC_ALIGN_12B_R,(uint32_t)(temp*4096/3.3f)); printf("Set Voltage:%.1f\n",temp);} adc_value=Get_ADC_Value(hadc1,10);printf("ADCVALUE = %d, ADCVALUE(V) = %fV\r\n",adc_value,adc_value*3.3/65535); }
最终可以在串口看到正确的实验现象,如下图:
三、内部温度传感器实验
1.参数设置
注意:不要忘记打开ADC3的通道中断
2.函数功能实现
首先要进行ADC校准以及要打开ADC通道。
代码如下(示例):
/* USER CODE BEGIN 2 *///校准ADCHAL_ADCEx_Calibration_Start(&hadc3,ADC_CALIB_OFFSET,ADC_SINGLE_ENDED); //打开ADC3HAL_ADC_Start(&hadc3);
/* USER CODE END 2 */ }
其次进行AD采集以及开始运用公式进行转换。
代码如下(示例):
HAL_ADC_Start(&hadc3);
adc_v = HAL_ADC_GetValue(&hadc3);
adcx = (110.0-30.0)/(*(unsigned short*)(0x1FF1E840) - *(unsigned short*)(0x1FF1E820));
temp = adcx*(adc_v - *(unsigned short*)(0x1FF1E820))+30;
//temp为最终的温度值
最终温度测试结果如下:
结束!!!希望小伙伴们多多关注。
stm32Cubemx实用篇(三):DAC电压输出和ADC电压检测以及内部温度传感器测温相关推荐
- stm32Cubemx实用篇(四):SD卡读写实验
stm32Cubemx实用篇(四):SD卡读写实验 本章将介绍使用stm32Cubemx软件配置SD卡读写.并通过串口打印出相应信息. 硬件平台:Stm32H743IIT6 +16GB TF卡 软件: ...
- 杰理AC632N—ADC电压检测
ADC电压检测-Note2 //**************app_power_manage.c**************// u32 my_adc_get_voltage(u32 ch); voi ...
- 基于51单片机及PCF8591芯片的ADC电压检测
前述: QQ:961209458 V X:F9986858 这个是一个简易课设作品. 单片机介绍: 8位CPU·4kbytes程序存储器(ROM) (52为8K) 128bytes的数据存储器(RAM ...
- Mendix开发介绍实用篇(三)
继续<实用篇二>的内容: 6. 创建Folder 7. 设置权限 展开Module,双击Security,打开Module security Type"Security" ...
- (实测可用)STM32CubeMX教程-STM32L431RCT6开发板研究(ADC)
一.开发板平台简介: 1.开发板资源简介 (1)开发板主芯片型号:STM32L431RCT6 (2)开发板主芯片封装:LQFP-64_10x10x05P (3)开发板主芯片内核:ARM® Cortex ...
- iOS直播实用篇(手把手教)
一.简述总体内容 1.直播流程介绍 2.Mac搭建nginx+rtmp服务器(模拟推流拉流) 3.简单的集成推流拉流(实用篇) 4.好的博客推荐 二.直播流程介绍 1.简单的流程图 简单的流程图 2. ...
- 学习笔记:SpringCloud 微服务技术栈_实用篇②_黑马旅游案例
若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...
- echarts实用篇(一)——饼状图
echarts实用篇(一)--饼状图 从官网上我们可以看到通常用到的有这几类: 常规饼状图 环形图 嵌套环形图 纹理饼图 南丁格尔玫瑰图 定制饼状图 下面来看看各类的基本做法,直接使用官网上的例子. ...
- SpringCloud实用篇01
SpringCloud实用篇资料下载 1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构.这些架构之间有怎样的差别呢? 1.0.学习目标 ...
最新文章
- vue indev.html,webpack多入口热加载很慢
- 笨方法python3_“笨方法”学Python3,习题 34 。
- 变频器输出功率_工业电气设计|变频器的输出功率该如何选择?
- 胶囊路由_评论:胶囊之间的动态路由
- mysql 帐号开启远程_两大步骤教您开启MySQL 数据库远程登陆帐号
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第7篇]随机性如何辅助计算和什么是BPP类问题
- Node.js中事件的循环
- LeetCode 4	Median of Two Sorted Arrays
- Python中的相对文件路径的调用
- 如何在Linux中使用history命令
- 计算机视觉必备框架!Opencv系列学习实战
- spring4笔记----依赖注入的两种形式
- WINDOWS上svn服务器自动部署
- python arduino 蓝牙_树莓和Arduino之间的蓝牙通讯
- 家庭局域网_分析 | 如何查询局域网内在用的IP地址?
- 16个值得个人站长做的广告联盟[转自cnzz]
- linux系统下u盘变成只读模式如何修改
- Android返回键
- 【单片机】自学单片机第01天|单片机简介、内部资源、最小系统
- 【语音之家】AI产业沙龙—语音技术在贝壳的应用