STM32F103ZET6【HAL函开发】STM32CUBEMX------7.DAC实验

2023-11-14

STM32F103ZET6有2 个 DAC 转换器:每个转换器对应 1 个输出通道
对应的IO口如下:
DAC_OUT1—PA4
DAC_OUT2—PA5
目的:DAC通道2可以输出3.3以下的任意电压,同时通过ADC1通道8采集到,打印到串口。

硬件连接:
由于ADC和DAC都是STM32F103ZET6的内部资源,所以只需要一根杜邦线将ADC1 的通道8即 PB0和DAC2的PA5连接起来即可。

STM32CUBEMX配置:
省略配置时钟和仿真口,直接设置IO,配置如下图。

ADC1 通道8配置 PB0
DAC2配置 PA5

因为用到了串口打印,所以需要配置串口,USART1的PA9和PA10

代码编写:

1.因为用到串口打印,加入头文件"stdio.h"+宏定义led灯亮灭状态+变量

/* USER CODE BEGIN 1 */
#include "stdio.h"
#define LED0_ON() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET)//LED0点亮
#define LED0_OFF() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET)//LED0熄灭
uint16_t adc_value=0,adc_volt=0;
uint8_t str_buff[64];
/* USER CODE END 1 */
/* USER CODE END Includes */

2.定义串口发送函数+ADC采样函数

/* USER CODE BEGIN 0 */
void URE_Send_Info()
{
	sprintf((char*)str_buff,"采样值:%d,电压值:%d.%d%dV\r\n",adc_value,adc_volt/100,(adc_volt%100)/10,adc_volt%10);
	HAL_UART_Transmit(&huart1,str_buff,sizeof(str_buff),10000);
}

void adc_get_value()
{
	HAL_ADC_Start(&hadc1);                    //启动ADC单次转换
	LED0_ON();
	if(HAL_ADC_PollForConversion(&hadc1,10)==HAL_OK)
	{
	adc_value=HAL_ADC_GetValue(&hadc1);
	adc_volt=adc_value*330/4096;	
	}
URE_Send_Info();
LED0_OFF();	
HAL_ADC_Stop(&hadc1);  
}
/* USER CODE END 0 */

3.主函数中的while(1)中加入ad采集函数

  while (1)
  {
    /* USER CODE END WHILE */
	adc_get_value();
	HAL_Delay(500);
    /* USER CODE BEGIN 3 */
  }

4.主函数中设置DAC转换电压的大小+开启DAC转换
改变后面的1000的数字大小,即可以改变输出的电压大小。最大不超过3.3V。

  /* USER CODE BEGIN 2 */
	HAL_DAC_SetValue(&hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_R,1000); // 设置DAC的大小
	HAL_DAC_Start(&hdac, DAC_CHANNEL_2);//开启DAC转换
  /* USER CODE END 2 */

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F103ZET6【HAL函开发】STM32CUBEMX------7.DAC实验 的相关文章

  • mysql with语句_sql 中的with 语句使用

    一直以来都很少使用sql中的with语句 但是看到了一篇文章中关于with的使用 它的确蛮好用 希望以后记得使用这个语句 一 with 的用法 With alias name as select1 alias namen as select
  • 【Python游戏】咱就说Python实现一个蔡徐坤大战篮球的小游戏,可还行?

    相关文件 想学Python的小伙伴可以关注小编的公众号 Python日志 有很多的资源可以白嫖的哈 不定时会更新一下Python的小知识的哈 需要源码的小伙伴可以在公众号回复蔡徐坤大战篮球 Python源码 问题解答学习交流群 773162
  • PPLM:使用即插即用语言模型控制文本生成

    Paper https arxiv org pdf 1912 02164 pdf Code https github com uber research PPLM 本文讨论了一种受控文本生成的替代方法 称为即插即用语言模型 PPLM 该方法
  • Linux 启动脚本 完全注释 1 -- 整体流程

    Linux太伟大了 什么东西都可以由你来做主 Linux加载完内核后 所有的其他系统服务 进程 都是靠脚本来加载的 所以Linux是这么的透明 你可以清除的指导你的系统做了什么 下面我就对Linux的启动脚本做了注释 该脚本是属于LFS的
  • QT进程间通信详细介绍及QProcess机制分析

    1 QT通信机制 为了更好的实现QT的信息交互 在QT系统中创建了较为完善的通信机制 QT的通信可分为QT内部通信和外部通信两大类 对于这两类通信机制及应用场合做如以下分析 1 QT内部对象间通信 在图形用户界面编程中 经常需要将一个窗口部
  • java单元测试工具 junit

    单元测试 unit testing 是对程序中最小的可测试部分进行检查和验证 验证程序执行的结果是否和自己期待的结果一致 junit就是一个java语言的比较常用的单元测试框架 目前主要版本有junit3和junit4 二者的区别是就jun
  • 声明式事务@TransactionTemplate 手动提交 手动回滚

    使用 TransactionTemplate 或编程式事务管理来手动提交事务之外 还可以使用注解 Transactional 来控制事务的提交和回滚 如何在 Spring Boot 中使用 Transactional 注解来手动提交事务 S
  • OpenWrt 未来智能家居系统、物联网的底层核心

    前言 很多参加 跟着佐大学OpenWrt开发 培训班的学员对OpenWrt未来的发展方向很迷茫 所以写此文谈一下我对OpenWrt未来趋势的看法 随着OpenWrt的流行 OpenWrt已经在不知不自觉中从单纯的路由器系统转变成了智能家居
  • javascript排序

  • teamSpeak Server搭建Linux

    1 需要用到的 Xshell以及Xftp 操作云服务器以及上传teamSpeak Linux文件 还需要一台云服务器 2 开放服务器防火墙端口 1 如果Xshell连接不上就是22端口没开放 3 下载teamSpeak Linux文件 1

随机推荐

  • 平行云受邀参与撰写信通院XRMA联盟《3D数字内容生产技术白皮书》

    本周 由中国信息通信研究院发起编制的 3D数字内容生产技术白皮书 首次全体研讨会在线上举行 来自信通院 平行云 北航虚拟现实国家重点实验室 中国联通研究院 中国电信研究院 Cocos等多家单位的专家参与本次研讨 会上 信通院专家介绍项目研究
  • 华为OD机试 Python 最佳植树距离

    描述 小明得到了一项任务 在一个沙地里种树 不过 有些地方不能种树 只能选特定的位置来种 为了让树之间的空间尽可能大 从而更好地防沙 你要帮小明决定每棵树应该种在哪里 举个例子 如果合适的种树地点是1 3 5 6 7 10 13 你有3棵树
  • tortoisegit:TortoiseGitPlink Fatal Error - No supported authentication methods available

    TortoiseGit gt Settings gt Network gt 将SSH client设置成C Program Files Git usr bin ssh exe
  • ajax如何传对象去后台,ajax如何传一个实体对象到后台呢

    实体声明 function target code content isnt temgix temgix1 temgix2 temgix3 gruw this code code this content content this isnt
  • js 正则表达式

    js 正则表达式 http tool oschina net regex https developer mozilla org zh CN docs Web JavaScript Guide Regular Expressions 11
  • 深入理解计算机系统-程序链接

    链接 就是将不同部分的代码和数据手机和组合成为一个单一文件的过程 这个文件可被加载到存储器并执行 链接过程可以在如下时间执行 编译时 在源代码翻译成机器代码时 加载时 程序被加载器加载到存储器并执行时 运行时 由应用程序去完成这个工作 OS
  • 笛卡尔积的解释和作用

    一 笛卡尔积的解释 例 给出二个域 假设集合A a b 集合B 0 1 2 则两个集合的笛卡尔积为 a 0 a 1 a 2 b 0 b 1 b 2 类似的例子有 如果A表示某学校学生的集合 B表示该学校所有课程的集合 则A与B的笛卡尔积表示
  • c语言浮点数出错_20192020第二学期C语言练习题03

    一 单选题 共100题 50分 1 若有定义int a 10 p a 则表达式p 5表示 A 元素a 5 的地址 B 元素a 6 的地址 C 元素a 5 的值 D 元素a 6 的值 正确答案 A 2 题号 8281若有定义 int aa 8
  • FFmpeg将编码后数据保存成mp4

    以下测试代码实现的功能是 持续从内存块中获取原始数据 然后依次进行解码 编码 最后保存成mp4视频文件 可保存成单个视频文件 也可指定每个视频文件的总帧数 保存多个视频文件 为了便于查看和修改 这里将可独立的程序段存放在单个函数中 1 线程
  • Android判断有无外置SD卡(TF卡),并读写文件

    转载来源 https blog csdn net qq 27061049 article details 94178875 1 相关方法说明 2 Android Manifest xml 添加权限
  • 自制USB-HUB一分四扩展器

    自制USB HUB一分四扩展器 电脑只有俩USB2 0接口 不够用 所以决定自己做一个 使用到的芯片是sl2 1a 考虑到是自己用 所以成本还是比较重要的 这款芯片价格便宜 而且做扩展器也是够用的 适用于USB2 0 下面是原理图 其实这个
  • 您的计算机已被.balckhoues-V-XXXXXXX勒索病毒感染?恢复您的数据的方法在这里!

    引言 网络威胁不断进化 勒索病毒成为了当今数字世界中的一大威胁 在这些恶意软件中 balckhoues V XXXXXXX 勒索病毒以其高级的加密技术和威胁手段引起了广泛关注 本文91数据恢复将深入介绍 balckhoues V XXXXX
  • RAS非对称加密,前端js加密,node后端解密,jsencrypt

    纯HTML引入jsencrypt js文件 node后端解密也是独立文件jsencryptnode js 前端加密 下面是公钥
  • 实战经验分享:如何通过HTTP代理解决频繁封IP问题

    在网络爬虫和数据采集等应用中 频繁遇到目标网站封锁或限制IP的情况是非常常见的 为了解决这个问题 使用HTTP代理是一种有效的方法 本文将与您分享一些实战经验 帮助您通过HTTP代理解决频繁封IP问题 确保您的数据采集工作顺利进行 一 了解
  • 查看Oracle数据库的用户名和密码

    运行 cmd 按如下输入命令 sqlplus as sysdba sysdba为超级用户 alter user 用户名 account unlock 解除锁定 必须带 号 注意用英文字符 alter user 用户名 identified
  • 网页版百度网盘倍速方法

    打开控制台在console中输入以下代码 videojs getPlayers video player html5player tech setPlaybackRate 2 然后回车即可 后面数字即为速度可以自由定义 附 打开控制台办法
  • Selenium Python2022(二)

    您可能需要在多种情况下针对不同的浏览器 例如Firefox Chrome Internet Explorer Edge 测试代码 跨不同浏览器测试网站的做法称为自动浏览器测试 要使用Selenium自动化测试执行自动浏览器测试 您应该在单元
  • 元宇宙时代超高清视音频技术白皮书关于流媒体协议和媒体传输解读

    流媒体协议 元宇宙业务场景对流媒体传输的实时性和互动性提出了更高的要求 这就需要在传统的 RTMP SRT HLS 等基础上增加实时互动的支持 实时互动 指在远程条件下沟通 协作 可随时随地接入 实时地传递虚实融合的多维信息 身临其境的交互
  • 数据可视化:在 React 项目中使用 Vega 图表 (二)

    上一篇讲了如何在 React 项目中用 Vega Lite 绘制基本的 area chart 图表 本篇将介绍如何绘制多层图表 如何添加图例 多层图表 通过上一篇文章 我们知道了可以通过 mark encoding 等来描述我们想要的图表
  • STM32F103ZET6【HAL函开发】STM32CUBEMX------7.DAC实验

    STM32F103ZET6有2 个 DAC 转换器 每个转换器对应 1 个输出通道 对应的IO口如下 DAC OUT1 PA4 DAC OUT2 PA5 目的 DAC通道2可以输出3 3以下的任意电压 同时通过ADC1通道8采集到 打印到串