蓝桥杯嵌入式学习日记(五)——DAC数模转换【STM32】【HAL库】

本文详细介绍了如何在STM32中使用DAC模块,包括配置12位模式、左右对齐选项,以及通过STM32cubemx创建工程。作者提供了代码示例和功能检验方法,如通过万用表测量输出或使用ADC验证输出电压。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、查阅手册

在这里插入图片描述

STM32的DAC模块(数字/模拟转换模块)是12位数字输入,电压输出型的DAC。
DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。
DAC工作在12位模式时,数据可以设置成左对齐或右对齐。
DAC模块有2个输出通道,每个通道都有单独的转换器。
在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。
DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。
等等

主要特征:
1、支持数据左对齐或者右对齐,数据是12位的
2、支持两个通道同时输出
3、支持输出噪声波形和三角波形
4、支持DMA输出
5、可以外部触发
6、支持缓冲输出和非缓冲输出两种模式
等等

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

再通过观察原理图我们可以发现PA4和PA5为拓展DAC引脚。另外查看所需要的函数定义
在这里插入图片描述
HAL_ADC_SetValue的前几个参数跟上篇的ADC类似,为DAC编号和对应的通道,而第三个也给出了解释。
在这里插入图片描述
为我们所选择的对应数据,这里有三个选项,分别是12位的右对齐和左对齐以及8位的右对齐。上面参考手册有对应说明,这里我们选择12位的右对齐,高位舍弃,取出低12位,作为DAC转换的数值。
在这里插入图片描述

二、利用STM32cubemx创建工程

  这里我们依旧沿袭上篇的工程进行创建。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里模式我们选择连接到外部引脚,对应参数保持默认即可,想要使用DMA的可以自行开启。

三、代码部分

1、代码和原理

  ADC和DAC大致相似,区别就在于上篇ADC我们是先获取再赋值,而DAC我们则是先赋值再获取

void DAC_SetValue(float volt_1,float volt_2)
{
    volt_ch1 = (volt_1/3.3f*4096) ;
	HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, volt_ch1) ;	
	HAL_DAC_Start(&hdac1, DAC_CHANNEL_1) ;

    volt_ch2 = (volt_2/3.3f*4096) ;
	HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_2, DAC_ALIGN_12B_R, volt_ch2) ;	
	HAL_DAC_Start(&hdac1, DAC_CHANNEL_2) ; 
}

对应的便是先设置数值然后再打开对应通道,和ADC同时学习的时候不要记混。同时数据精度为4096,因为是通过和基础电压Vref+产生的电压,所以范围在0~3.3V,只要让我们设置的电压/3.3*4096即可。

2、实现功能检验

这里给两种方式:
1、如果手边有万用表的,可以直接测量PA4和PA5引脚与GND的压差即可,这里建议先拿两根公母杜邦线引出后再进行测量,因为在CT117E_M4这块板子上引脚距离很近,测量时不小心碰到其它引脚容易短路。
2、可以使用我们上篇所讲的ADC进行测量,以下具体讲这种方法。

使用ADC进行测量,不会的可以看上篇蓝桥杯嵌入式学习日记(四)——ADC数模转换【STM32】【HAL库】,我们在上篇看到过对应原理图分别使用的是J11和J12跳帽。
在这里插入图片描述
接下来我们拔掉J11和J12跳帽,隔绝掉与旋钮电位器的连接,将PA4和PA5用两根母母杜邦线连接至靠近屏幕一端即可。
在这里插入图片描述

    DAC_SetValue(1.2,2.0) ;

我这里分别设置PA4为1.2V,PA5为2.0V
在这里插入图片描述
在这里插入图片描述
文中所用的工程我会贴在下面,如有需要可自行下载,如果有疑问或者有什么错误之处还望留言指正。

链接:https://pan.baidu.com/s/1jWWfQyIN0f2vUtkYLgMjMA?pwd=1111
提取码:1111

<think>好的,用户想了解2025年蓝桥杯嵌入式比赛的比赛大纲和准备资料。首先,我需要回忆现有的引用内容,看看有没有相关的信息。引用[1]提到用户是电子信息专业的学生,参加过蓝桥杯嵌入式竞赛并分享了学习过程,可能里面有大纲的内容。引用[3]中用户提到大二上报名,比赛内容包括客观题和程序设计题,但具体大纲可能没有详细列出。引用[4]则提供了复习笔记和模块使用,可能涉及具体知识点。 接下来,用户需要的是2025年的大纲和准备资料,但现有的引用都是关于往届的。不过蓝桥杯比赛的大纲通常变化不大,可以参考往届内容。例如,引用[1]提到参赛资格和竞赛大纲,可能包括硬件平台、软件工具等。引用[2]和[3]提到了准备方法,比如学习STM32、模块开发、刷题等。 我需要综合这些信息,整理出大纲的结构,比如参赛资格、比赛形式、考核内容等。另外,准备资料方面,可能需要推荐学习路径、开发板使用、代码练习等。同时,用户可能需要相关问题的建议,比如如何平衡理论与实践,如何选择开发板等。最后,确保回答符合格式要求,使用中文,正确引用来源,并生成相关问题。</think>### 2025年蓝桥杯嵌入式比赛大纲与准备资料 #### 一、比赛大纲(参考往届内容) 根据往届蓝桥杯嵌入式竞赛的框架,2025年大纲可能包含以下内容[^1][^3][^4]: 1. **参赛资格** 一般为高校全日制在校学生(本科、高职高专),以个人形式参赛,需通过学校或官网报名。 2. **比赛形式** - **客观题**(约20%):考察嵌入式系统基础知识,如C语言、STM32外设原理、电路分析等。 - **程序设计题**(约80%):基于STM32开发板(如CT117E或新版型号)完成功能开发,涉及GPIO、定时器、ADC、LCD显示、通信协议(I2C、SPI)等模块的综合应用。 3. **考核模块** - **基础外设**:LED、按键、EEPROM、ADC、PWM。 - **进阶功能**:LCD图形界面设计、RTC实时时钟、多任务调度。 - **扩展模块**:温度传感器、MCP4017可变电阻、超声波模块等[^4]。 4. **评分标准** 功能完整性、代码规范性、实时性优化、低功耗设计等。 --- #### 二、准备资料与学习路径 1. **硬件准备** - 使用官方指定的开发板(如STM32G4系列),熟悉其原理图与资源分配[^4]。 - 掌握万用表、示波器等调试工具的使用。 2. **软件工具** - **Keil MDK**:STM32程序开发与调试,需熟悉工程配置、寄存器操作、函数开发[^3]。 - **CubeMX**:图形化配置引脚与时钟,生成初始化代码。 3. **核心学习内容** - **C语言基础**:指针、结构体、位操作。 - **STM32外设开发**: - GPIO控制:LED流水灯、按键扫描。 - 定时器:PWM输出、输入捕获。 - ADC:电压采集与滤波算法。 - 通信协议:I2C(EEPROM读写)、SPI(LCD驱动)。 - **综合项目实战**:历届真题复现(如2023年温控系统、2024年智能小车)[^4]。 4. **推荐资源** - 蓝桥杯官网往届试题与开发文档。 - 《STM32开发实战指南》+ 官方数据手册。 - 开源社区(GitHub/Gitee)的参考代码[^2]。 --- #### 三、备赛策略 1. **基础阶段**(1-2个月): 完成开发板所有外设的独立功能实现,例如用ADC读取电位器电压并通过LCD显示。 2. **强化阶段**(1个月): 刷历届赛题(如2021-2024年题目),重点练习模块组合(如“ADC+LCD+按键菜单”)。 3. **冲刺阶段**(2周): 模拟比赛环境(限时4小时),优化代码结构和调试效率。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lumine.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值