STM32CubeMx开发之路—12使用ADC和DAC
STM32CubeMx开发之路 — 使用ADC和DAC运行环境Windows10STM32CubeMXVersion 5.2.0Keil5(MDK5)Version 5.28.0.0芯片STM32F103ZE简介本例程主要讲解如何使用ADC和DACSTM32CubeMx基本配置基础配置过程请参考STM32CubeMx(Keil5)开发之路—配置第一个项目CubeMX配置调试打印配置ADC配置1.选择ADC2.选择IN03.选择好了会发现相应的输入管脚DAC配置1.选择DAC2.选择OUT1 Configuration3.选择好了会发现相应的输出管脚代码修改添加代码(讲解写在代码里面)/* USER CODE BEGIN 0 */ /* 使用printf功能 */ int fputc(int ch, FILE *f) { HAL_UART_Transmit(huart1, (uint8_t *)ch,1, 0xFFFF); return ch; } /* USER CODE END 0 */main函数int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART1_UART_Init(); MX_ADC1_Init(); MX_DAC_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { static double SetVcc 0; static uint16_t ReadVcc; SetVcc SetVcc 0.5; if(SetVcc 3.3) { SetVcc 0; } /* 设置DAC输出的电压 */ HAL_DAC_SetValue(hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, (SetVcc / 3.3 * 4096)); HAL_DAC_Start(hdac, DAC_CHANNEL_1); /* 打印 */ printf(PA0 set voltage:%.4f\n, SetVcc); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_ADC_Start(hadc1); HAL_ADC_PollForConversion(hadc1, 50); if(HAL_IS_BIT_SET(HAL_ADC_GetState(hadc1), HAL_ADC_STATE_REG_EOC)) { /* 读取ADC的电压 */ ReadVcc HAL_ADC_GetValue(hadc1); /* 打印 */ printf(PA4 read voltage:%.4f\n, ReadVcc * 3.3f / 4096); } HAL_Delay(1000); } /* USER CODE END 3 */ }测试运行这儿我们将PA0和PA4管脚短接起来,ADC读取我们DAC的输出烧录程序,复位之后,使用串口调试助手查看打印信息发现设置的值和读取到的值相差很小说明测试没问题源码STM32F103ze_ADC_DAC.rar小结很多地方都会用到ADC和DAC,比如音频,温度计,示波器等源代码获取源码仓库: 码云仓库

相关新闻

RT-Thread—STM32—EasyFlash

RT-Thread—STM32—EasyFlash

RT-Thread—STM32—EasyFlash 概述 本教程主要根据官方推荐的教程进行改编,详细信息请参考EasyFlash软件包 本例程的模板使用通用模板环境搭建里面的模板 RT-Thread——STM32——FAL库 示例工程请参见文末的源码仓库链接, 建议从头开始移植, 加深印象。 配置 打开工…

2026/10/11 3:59:54 阅读更多 →
gitlab4j-api 实战:Java 客户端封装 GitLab REST API 与 CI/CD 避坑指南

gitlab4j-api 实战:Java 客户端封装 GitLab REST API 与 CI/CD 避坑指南

简介:GitLab4J API 是一套面向 Java 开发者的 GitLab REST API 客户端库,适合需要在自有系统中集成 GitLab 仓库管理、CI/CD 或用户权限等能力的后端工程师与运维开发人员。它封装了项目、分组、合并请求、用户、议题、提交等常用子 API,并支…

2026/10/11 3:59:54 阅读更多 →
HarmonyOS V2状态管理实战:从@local开始搞懂深拷贝与嵌套观测

HarmonyOS V2状态管理实战:从@local开始搞懂深拷贝与嵌套观测

从V1那套状态管理切到V2之后,我第一个上手的就是local。说实话,刚开始看文档的时候觉得它就是State换了个名字,但真正在项目里用了两周才发现,这两个装饰器的设计思路根本不在一个维度。HarmonyOS 6.0的V2状态管理把“状态来源”这…

2026/10/11 3:59:54 阅读更多 →

最新新闻

Makefile核心魔法:目标、依赖与时间戳,实现增量构建

Makefile核心魔法:目标、依赖与时间戳,实现增量构建

我先说个真事儿:之前我维护一份项目代码,光是编译命令就有一长串,每次改完代码都要在终端里翻历史记录找出那条gcc。后来有同事嫌麻烦,干脆写了个shell脚本,把所有目标文件删掉再重新编译,美其名曰“每次构…

2026/10/11 4:43:21 阅读更多 →
OpenAI在ChatGPT和Codex中加入文本水印功能

OpenAI在ChatGPT和Codex中加入文本水印功能

OpenAI宣布在ChatGPT和Codex中推出一种隐形的、机器可读的文本水印技术,但目前这项功能仅面向欧盟地区用户开放。OpenAI表示,其名为textGrain的文本水印技术"达到或超过"了其他类似方案的表现,比如谷歌DeepMind为文本设计的SynthID…

2026/10/11 4:43:21 阅读更多 →
瑞士薪资+东南亚生活:全球远程测试岗位的薪酬逻辑与实操指南

瑞士薪资+东南亚生活:全球远程测试岗位的薪酬逻辑与实操指南

这份稀缺的工作形态,背后其实是全球远程协作和薪酬体系的一次重构。作为长期在一线做测试、也带过跨国测试团队的从业者,我见过太多人只盯着“高薪”两个字,却没想明白这个模式里真正值钱的是什么,也没看清背后需要付出的代价。今…

2026/10/11 4:43:21 阅读更多 →
Android天气源码精讲:Gradle同步与Retrofit网络请求

Android天气源码精讲:Gradle同步与Retrofit网络请求

简介:面向移动开发初学者的Android Studio天气预报小程序完整源码包,基于Retrofit与Gson实现网络请求,覆盖项目配置、接口封装、数据解析、UI绑定及下拉刷新等核心环节,适合正在学习Android网络编程或需要课程设计参考的开发者。资…

2026/10/11 4:43:21 阅读更多 →
Go项目打deb包全攻略:从工具选型到生产实践

Go项目打deb包全攻略:从工具选型到生产实践

做 Go 项目就要打成 deb 的那种痛,我太懂了如果你维护过 Linux 服务器上的 Go 服务,肯定经历过这么一段:开发机上一顿go build,二进制是出来了,扔到生产服务器上也能跑,但每次升级都要手动传文件、手动停服…

2026/10/11 4:43:21 阅读更多 →
Wand-Enhancer 完整指南:4 步免费解锁 WeMod Wand Pro 与手机远程面板

Wand-Enhancer 完整指南:4 步免费解锁 WeMod Wand Pro 与手机远程面板

Wand-Enhancer 完整指南:4 步免费解锁 WeMod Wand Pro 与手机远程面板 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer Wand-Enhancer 是…

2026/10/11 4:42:20 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →