STM32 DAC模块的应用(FW_F1_V1.8.5)

目录

概述

1 STM32Cube配置项目

1.1 软件版本信息

1.2 配置DAC模块参数

1.3 GENERATE Project

2 DAC库函数介绍

2.1 初始化函数:HAL_DAC_Init

2.2 启动DAC数据转换:HAL_DAC_Start

2.3 停止DAC数据转换:HAL_DAC_Stop 

 2.4 设置通道数据函数:HAL_DAC_SetValue

3 功能代码实现

3.1 数据配置函数

3.2 初始化函数

4 测试

4.1 测试代码实现

4.2 运行结果


概述

本文主要讲述STM32F103芯片DAC模块模块的使用方法,包括使用STM32Cube工程生成工程项目。还介绍了FW_F1_V1.8.5中和DAC模块相关的库函数的使用方法。最后,编写一个案例,使用DAC模块输出模拟电压,使用ADC模块检测该电压的值。比较其是否一致。

1 STM32Cube配置项目

1.1 软件版本信息

软件名称版本信息
STM32CubeSTM32CubeMX 6.11
STM32 HALSTM32Cube_FW_F1_V1.8.5
KEIL(编译软件)Version: 5.38.0.0

1.2 配置DAC模块参数

1)使能DAC模块,笔者选择OUT2作为输出端口

 2)使能输出Buff

3)IO口选择,选择PA5端口作为输出接口

1.3 GENERATE Project

 完成参数配置后,就可以生成项目,点击GENERATE生成项目如下:

2 DAC库函数介绍

2.1 初始化函数:HAL_DAC_Init

函数原型:

HAL_StatusTypeDef HAL_DAC_Init(DAC_HandleTypeDef *hdac);

功能介绍:

根据指定的参数初始化DAC外设在DAC_InitStruct中初始化相关句柄。

参数介绍:

hdac:  指向DAC_HandleTypeDef结构体的指针,该结构体包含指定DAC的配置信息。

2.2 启动DAC数据转换:HAL_DAC_Start

函数原型:

HAL_StatusTypeDef HAL_DAC_Start(DAC_HandleTypeDef *hdac, uint32_t Channel);

功能介绍:

根据指定的参数初始化DAC外设在DAC_InitStruct中初始化相关句柄,启动对应通道DAC转换数据功能。

参数介绍:

hdac:  指向DAC_HandleTypeDef结构体的指针,该结构体包含指定DAC的配置信息。

Channel: 通道号

2.3 停止DAC数据转换:HAL_DAC_Stop 

函数原型:

HAL_StatusTypeDef HAL_DAC_Stop(DAC_HandleTypeDef *hdac, uint32_t Channel);

功能介绍:

根据指定的参数初始化DAC外设在DAC_InitStruct中初始化相关句柄,停止对应通道DAC转换数据功能。

参数介绍:

hdac:  指向DAC_HandleTypeDef结构体的指针,该结构体包含指定DAC的配置信息。

Channel: 通道号

 2.4 设置通道数据函数:HAL_DAC_SetValue

函数原型:

HAL_StatusTypeDef HAL_DAC_SetValue(DAC_HandleTypeDef *hdac, uint32_t Channel, uint32_t Alignment, uint32_t Data);

功能介绍:

根据指定的参数初始化DAC外设在DAC_InitStruct中初始化相关句柄,停止对应通道DAC转换数据功能。

参数介绍:

hdac:  指向DAC_HandleTypeDef结构体的指针,该结构体包含指定DAC的配置信息。

Channel: 通道号

Alignment: 字节对其方式和bit位个数

Data:  DAC通道要传递的值

3 功能代码实现

3.1 数据配置函数

函数91行: 调用HAL_DAC_SetValue函数配置DAC数值

Alignment配置为DAC_ALIGN_12B_R

3.2 初始化函数

代码37~58行:为STM32Cube自动生成的代码,完成DAC功能初始化

代码60行:配置通道的数据

代码61行:启动DAC数值转换功能

 源代码如下:

/* DAC init function */
void MX_DAC_Init(void)
{/* USER CODE BEGIN DAC_Init 0 *//* USER CODE END DAC_Init 0 */DAC_ChannelConfTypeDef sConfig = {0};/* USER CODE BEGIN DAC_Init 1 *//* USER CODE END DAC_Init 1 *//** DAC Initialization*/hdac.Instance = DAC;if (HAL_DAC_Init(&hdac) != HAL_OK){Error_Handler();}/** DAC channel OUT2 config*/sConfig.DAC_Trigger = DAC_TRIGGER_NONE;sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;if (HAL_DAC_ConfigChannel(&hdac, &sConfig, DAC_CHANNEL_2) != HAL_OK){Error_Handler();}/* USER CODE BEGIN DAC_Init 2 */HAL_DAC_SetValue( &hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_R, 100 );HAL_DAC_Start( &hdac, DAC_CHANNEL_2);/* USER CODE END DAC_Init 2 */}

4 测试

4.1 测试代码实现

由于笔者没有示波器用于测试模拟信号,于是使用一路ADC来转换DAC输出的模拟量。关于ADC功能的代码实现,可参考笔者其他文章在,合理只介绍DAC部分的实现方法。

测试代码如下:

ADC数据采集代码:

4.2 运行结果

ADC采集的数字量和DAC输出的模拟量的对应关系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/359944.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软件下载】Camtasia Studio 2024详细安装教程视频

习惯上来说Camtasia Studio是一款简单易用的高清录屏和视频编辑软件,拥有录制屏幕和配音、视频的剪辑和过场动画片、添加说明字幕和水印、制作视频封面和菜单、视频压缩和播放。不得不说Camtasia是一款屏幕录制和视频剪辑软件,教授课程,培训他…

剑指offer 算法题(搜索二维矩阵)

剑指offer 第二题 去力扣里测试算法 思路一&#xff1a; 直接暴力遍历二维数组。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for (unsigned int i{ 0 }; i < matrix.size(); i){for (unsigned int j{ 0 };…

【NLP练习】Transformer实战-单词预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 参考链接&#xff1a; LANGUAGE MODELING WITH NN.TRANSFORMER AND TORCHTEXT 任务&#xff1a;自定义输入一段英文文本进行预测 一、定义模型 from tempfi…

多维表格/业务库表格大数据量性能瓶颈

先说最终结论&#xff1a;Angular 组件创建性能损耗是当下主要的性能瓶颈 理由&#xff1a; 基于以往编辑器性能优化的经验&#xff0c;编辑器在动态渲染内容时会创建很多壳子组件&#xff08;也就是Angular 组件&#xff09;&#xff0c;排查的时候就发现如果略这些壳子组件性…

Day9 —— 大数据技术之ZooKeeper

ZooKeeper快速入门系列 ZooKeeper的概述什么是ZooKeeper&#xff1f;ZooKeeper的特点和功能使用ZooKeeper的原因 ZooKeeper数据模型ZooKeeper安装ZooKeeper配置ZooKeeper命令行操作常见服务端命令 ZooKeeper的概述 什么是ZooKeeper&#xff1f; ZooKeeper是一个开源的分布式协…

ZOOM太卡怎么办?公司如何解决ZOOM会议卡顿?

ZOOM作为一种常见的办公工具&#xff0c;尤其在跨国公司和外资企业中&#xff0c;在线会议非常普遍。然而&#xff0c;由于ZOOM的服务器部署在国外&#xff0c;国内用户使用时可能会遇到卡顿、不稳定和声音断续等问题。那么&#xff0c;如何有效解决ZOOM卡顿的问题呢&#xff1…

数据库管理-第212期 上期SQL性能优化勘误与扩展(20240624)

数据库管理212期 2024-06-24 数据库管理-第212期 上期SQL性能优化勘误与扩展&#xff08;20240624&#xff09;1 环境2 方案1问题3 问题引申总结 数据库管理-第212期 上期SQL性能优化勘误与扩展&#xff08;20240624&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海…

OS中断机制-外部中断触发

中断函数都定义在中断向量表中,外部中断通过中断跳转指令触发中断向量表中的中断服务函数,中断指令可以理解为由某个中断寄存器的状态切换触发的汇编指令,这个汇编指令就是中断跳转指令外部中断通过在初始化的时候使能对应的中断服务函数如何判断外部中断被触发的条件根据Da…

【机器学习项目实战(二)】基于朴素贝叶斯的中文垃圾短信分类

完整代码、数据集和相应的报告 链接已经放在了正文最下方, 供大家参考学习 摘要 ​ 本文探讨了中文垃圾短信分类的问题,通过收集实际数据集,运用多种机器学习算法进行分类,并对比了不同算法在垃圾短信分类任务上的性能。本研究旨在提高中文垃圾短信的识别准确率,为构建更…

《UDS协议从入门到精通》系列——图解0x2A:通过周期读ID数据

《UDS协议从入门到精通》系列——图解0x2A&#xff1a;通过周期读ID数据 一、简介二、数据包格式2.1 服务请求格式2.2 服务响应格式2.2.1 肯定响应2.2.2 否定响应 三、通信示例 Tip&#x1f4cc;&#xff1a;本文描述中但凡涉及到其他UDS服务的&#xff0c;将陆续提供链接跳转方…

CAN总线在新能源行业中的重要应用

2019年10月26日第三届中国&#xff08;佛山&#xff09;氢能源大会中展示了氢燃料电池城市客车&#xff0c;与目前的纯电动汽车和传统汽车相比&#xff0c;作为一种新的驱动形式出现。但是&#xff0c;新能源汽车整车网络的实现依旧离不开CAN总线通讯。 工程师们通过CAN总线读取…

Linux Redhat ens33不显示IP问题

优质博文&#xff1a;IT-BLOG-CN 【第一步】&#xff1a;查看系统网卡设备 : ip addr show 【第二步】&#xff1a;修改网卡配置参数 cd /etc/sysconfig/network-scripts/ vi ifcfg-ens33 修改ONBOOT参数为yes 【第三步】&#xff1a;重启网卡&#xff0c;然后ping检测…

Vue + SpringBoot 实现文件的断点上传、秒传,存储到Minio

一、前端 1. 计算文件的md5值 前端页面使用的elment-plus的el-upload组件。 <el-upload action"#" :multiple"true" :auto-upload"false" :on-change"handleChange" :show-file-list"false"><FileButton content&…

python中的<class ‘complex‘>

一般编程里面不怎么会讲&#xff0c;但是还是挺强大的一个类。 在 Python 中&#xff0c;<class complex> 表示复数类型。复数是一种包含实部和虚部的数学数&#xff0c;可以用 a bj 的形式表示&#xff0c;其中 a 表示实部&#xff0c;b 表示虚部&#xff0c;j 是虚数…

kylinos 国产操作系统离线安装firefox 麒麟操作系统安装新版本firefox

1. 火狐地址&#xff1a; 下载 Firefox 浏览器&#xff0c;这里有简体中文及其他 90 多种语言版本供您选择 2. 选择&#xff1a; 3. 下载完之后&#xff0c;上传到离线机器 4. 解压缩&#xff1a; tar -xvjf firefox-127.0.1.tar.bz2 5. 去点击解压后的文件夹&#xff0c;找…

Redis持久化(RDB、AOF)详解

Redis持久化详解 一、Redis为什么需要持久化&#xff1f; Redis 是一个基于内存的数据库&#xff0c;拥有极高的读写性能&#xff0c;但是内存中的数据在断电或服务器重启时会全部丢失&#xff0c;因此需要一种持久化机制来将数据保存到硬盘上&#xff0c;以便在需要时进行恢复…

Latex学习之“usefont”用法

Latex学习之“\usefont”用法 一、通俗的解释 \usefont 是 LaTeX 中的一个命令&#xff0c;用于在文档中临时改变字体&#xff0c;其基本语法如下&#xff1a; \usefont{字体编码}{字体族}{字体系列}{字体形状}这样看起来好像蛮抽象&#xff0c;你可能以及晕了&#xff0c;什…

《代码大模型安全风险防范能力要求及评估方法》正式发布

​代码大模型在代码生成、代码翻译、代码补全、错误定位与修复、自动化测试等方面为研发人员带来了极大便利的同时&#xff0c;也带来了对安全风险防范能力的挑战。基于此&#xff0c;中国信通院依托中国人工智能产业发展联盟&#xff08;AIIA&#xff09;&#xff0c;联合开源…

Midway + TypeORM项目部署到BT后启动失败,MySQL报错

Midway TypeORM项目部署到BT后启动失败&#xff0c;MySQL报错 前沿 您需要先了解这篇文章&#xff1a;https://blog.csdn.net/weixin_45687201/article/details/139336111 错误日志 服务状态开启后就失败项目日志&#xff0c;输出 \> my-midway-project1.0.0 start \&…

前端vue-cli相关知识与搭建过程(项目创建,组件路由)very 详细

一.关于vue-cli 1.什么是vue Vue (读音 /vju ː /&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。 Vue.js 是前端的主流框架之一&#xff0c;和 Angular.js…