使用STM32CubeMX 配置ADC+DAC(DMA)感受

2023-05-16

STM32CubeMX使用感受

开篇先说一下个人使用STM32CubeMX的感受,第一点的感受就是STM32CubeMX加速了开发流程,ST官方的库写的很好,在使用之前,开发流程一般是打开如正点原子/野火之类的一些代码合集,打开文件夹,按需从里面提前如ADC.c/.h等文件完成初始化的部分,然后编译完成没有错误后,再去调整初始化配置,在之后才开始应用接口。
而STM32CubeMX使用上与打开文件夹逐个功能提取的效果是一样的,但是CubeMX生产的代码更加规范,并且还有注释规范用户再哪里添加代码块。维护起来肯定比东拼西凑各家不一样变量定义的方便好用很大。

配置流程

RCC配置

在这里插入图片描述

时钟树配置

在这里插入图片描述

  • 发现一个很有趣的现象,再配置的过程中CubeMX更新过几次,最老版本是5.XX的H750VB官方默认的外部晶振是8M,更新后是25M。
  • 可以手动输入想要的工作频率,错误的时候官方会自动帮你配置接近的参数,这里配置200M是为了方便后续DAC输出正弦波时计算使用。

ADC配置

在这里插入图片描述

  • 配置的内容很简单,就是看着选项的名称然后根据自己的需要进行选择需要的内容即可
  • 如果不清楚选项的意思,可以点击叹号查看官方给出来的功能描述
  • 扫描选项默认是关闭的,且不能手动切换,只有选择下面通道数选项Number Of Conversion选择大于1才会打开扫描
  • 因为要开启DMA所以开启连续转换模式
  • 还有值得注意的就是通道优先级问题,默认所有RANK下的通道都是最高级通道,例如下面图中默认都是Channel 3,需要手动排序。
    在这里插入图片描述

DMA

在这里插入图片描述
按需配置即可,我这边选择循环

DAC配置

在这里插入图片描述

  • DAC的配置很简单按需打开即可
  • 波形输出需要选择触发源才会出现选项

生产代码注意事项

在这里插入图片描述

  • 需要注意编译使用的IDE软件版本
    在这里插入图片描述
  • 勾选生产.c.h文件选项
  • 全部内容堆放在main.c

生产代码效果

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MPU Configuration--------------------------------------------------------*/
  MPU_Config();

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */
	//定义一个DMA接收数组
	uint32_t ADC_Value[120]={0};
	//均值滤波
	uint32_t ad1=0, ad2=0, ad3=0, ad4=0, ad5=0, ad6=0;
	int i=0;
  /* 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_DMA_Init();
  MX_DAC1_Init();
  MX_ADC1_Init();
  MX_TIM6_Init();
  /* USER CODE BEGIN 2 */
  SineWave();//生成正弦数据
  HAL_TIM_Base_Start(&htim6);//打开定时器6
  HAL_DAC_Start_DMA(&hdac1,DAC_CHANNEL_2,(uint32_t *)Dat,80,DAC_ALIGN_12B_R);//开启DMA-DAC
	HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_Value, 120);//ADC_DMA 启动	
  /* USER CODE END 2 */
  • 官方注释做好了不同功能的模块的规范

总结

STM32CubeMX的使用极其方便,完美接近了常规开发东拼西凑代码各种花样不够统一规范的问题
对与个人而言唯一的缺点就是CubeMX只支持HAL库,而在实际开发过程中很多产品都还是标准库。
但是它的效率以及代码统一规范,对需要长期维护的产品来说是极大利好的。

个人安利

由于特殊情况,没办法使用示波器或者万用表测量,只能够通过串口转发来观察,Vofa+这款串口助手可以根据数据生成波形,效果还是很不错的。
在这里插入图片描述

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

使用STM32CubeMX 配置ADC+DAC(DMA)感受 的相关文章

  • *32.什么是DMA方式?什么是中断方式?有什么区别?

    DMA是l O设备与主存之间由硬件组成的直接数据通路 xff0c 主要用于高速I xff0f O设备与主存之间的成组数据传送 xff08 外设快 慢了没意义 然后数据多 xff0c 少了也没多大意义 xff09 首先讲一下外设跟内存进行数据
  • STM32CubeIDE使用笔记(02):STM32CubeMX配置与代码生成

    文章目录 目的 用户界面 引脚输出和配置 时钟配置 项目管理 工具 代码生成 更换芯片 总结 目的 STM32CubeIDE中整合了STM32CubeMX用来配置芯片资源生成初始化代码 本篇将介绍STM32CubeMX使用方法 用户界面 界
  • 基于stm32cubemx和keil的stm32(以stm32F407ZGTx为例)单片机的开发----实现printf函数将信息打印至串口

    一 printf打印函数实验 二 实验步骤 1 在cube里设置引脚 串口 串口5设置成异步 2 生成代码打开工程 别忘了先调试JLink 在main c文件开头添加头文件 在主函数外的用户区书写读取文件流函数 这样就可以使用printf函
  • stm32F4的ADC+DMA+Timer,实现2MHz连续采样。1LSB分辨率,极低噪声。

    1 ADC DMA Timer的实现原理 stm32F407 405的ADC为12位逐次逼近型ADC 有着高达2 4MHz的采样率 分辨率 1LSB 这样参数的ADC放在市面上单卖 也起码是 10 起步 而 stm32F407 405不仅内
  • FreeRTOS例程4-串口DMA收发不定长数据

    FreeRTOS例程4 串口DMA收发不定长数据 知乎 zhihu com
  • INL/DNL Measurements for High-

    Abstract Although integral and differential nonlinearity may not be the most important parameters for high speed high dy
  • STM32 进阶教程 18 – ADC间断模式

    前言 STM32 的ADC拥有连续扫描模式 也有间断模式 间断模式较扫描模式需要更多的触发事件才能完成所有的通道转换操作 在实际工程应用中 可以利用间断模式实现一些特殊应用 关于间断模式 在STM32的数据手册中有如下描述 本节将给大家展示
  • DMA基本概念与常见寄存器设置

    什么是DMA DMA Direct Memory Access 即直接存储访问 DMA传输方式无需CPU直接控制传输 通过硬件为RAM I O设备开辟一条直接传输数据的通路 能使CPU的效率大为提高 每一种体系结构DMA传输不同 编程接口也
  • 用 STM32 通用定时器做微秒延时函数(STM32CubeMX版本)

    概述 在使用 DHT11 的时候 时序通信需要微秒来操作 STM32CubeMX 自带一个系统时钟 但是实现的是毫秒级别的 因此就自己用通用计时器实现一个 文章目录 概述 1 配置定时器时钟 2 计数器时钟频率及计数模式 预分频系数 计数器
  • stm32之ADC应用实例(单通道、多通道、基于DMA)

    硬件 STM32F103VCT6 开发工具 Keil uVision4 下载调试工具 ARM仿真器 网上资料很多 这里做一个详细的整合 也不是很详细 但很通俗 所用的芯片内嵌3个12位的模拟 数字转换器 ADC 每个ADC共用多达16个外部
  • 负载均衡入门

    提纲 ADC 行业现状 ADC 原理 ADC 的实现方式 为什么是 ADC 而不是负载均衡 功能的扩展 解决了什么问题 可用性 Availability 伸缩性 Scalability 性能 End user performance 数据中
  • STM32CubeMX—串口空闲中断+DMA接收

    一 实验说明 实验平台 STM32F103C8T6 实验内容 使用串口一空闲中断结合DMA 完成不定长数据接收 STM32的串口接收数据的方式 1 轮询接收 所谓轮询 就是在主函数中判断接收完成的标志位 举个不太恰当例子 就比如 此时你正在
  • 我使用 opencv python 形式将模拟时钟转换为数字数据的小时和分钟,但我也需要它显示秒数

    我已经使用 opencv 来读取图像 将其转换为灰度 并使用 canny kernel thesh erode 等找到边缘 并且我已经使用 HooughLineP 检测到图像中的所有线条 并且我已经检测到时间和分针 但我还需要找到秒针 这是
  • DMA 与中断驱动的 I/O

    我不太清楚 DMA 和中断 I O 之间的区别 当前正在阅读操作系统概念 第 7 版 具体来说 我不确定在这两种情况下何时会发生中断 以及在这两种情况下 CPU 在什么时候可以自由地执行其他工作 我一直在读但不一定能调和的东西 中断驱动 通
  • 如何在 Visual Studio 2012 中创建/打开 DAC 应用程序?

    我很难弄清楚如何使用 Visual Studio 2012 实际创建甚至打开 DAC 应用程序 我使用的是 SQL Server 2012 我安装了 SSDT 从 Visual Studio 创建 根据在线文档 我应该能够看到名为 数据层应
  • 无法使用 DacFX 部署到 Azure 故障转移组内的 Azure SQL 数据库

    我无法使用 VS2015 17 数据库项目发布的读 写侦听器终结点或使用 DACFx 部署到 Azure 故障转移组内的 Azure SQL 数据库 我使用具有适当权限的包含用户 并通过直接部署到数据库的主 Azure SQL 服务器而不是
  • 分配大的 DMA 缓冲区

    我想分配一个大的 DMA 缓冲区 大小约为 40 MB 当我使用dma alloc coherent 它失败了 我看到的是 cut here WARNING at mm page alloc c 2106 alloc pages nodem
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N

随机推荐

  • 【STM32学习】GPIO口的八种工作模式

    GPIO口的八种工作模式 一 参考资料二 GPIO八种模式1 输入模式2 输出模式 三 施密特触发器1 电路2 电路计算 一 参考资料 GPIO原理图详解 强烈建议观看 xff1a GPIO为什么这样设计 xff1f 施密特触发器 原理 施
  • 【STM32学习】WWDG窗口看门狗

    STM32学习 WWDG窗口看门狗 x1f415 1 图展示WWDG原理2 复位 中断条件3 溢出时间计算4 与独立看门狗 x1f415 的对比 1 图展示WWDG原理 2 复位 中断条件 产生复位的情况 xff1a 当递减计数器数值递减到
  • 【STM32学习】时钟配置详解

    STM32学习 时钟配置详解 看懂时钟图结合代码外部高速时钟修改 看懂时钟图 在刚开始学习32的时候 xff0c 并不会在意这些 xff0c 或者即使看了也看的不是很明白 随着学习的深入 xff0c 我们发现看门狗 定时器 ADC很多外设都
  • vnc远程访问ubuntu18.04桌面系统 vncserver开机自启动

    文章目录 一 windows端准备二 ubuntu端准备三 远程连接桌面四 配置vncserver开机自启动 一 windows端准备 下载TightVNC xff1a https www tightvnc com 二 ubuntu端准备
  • 【STM32学习】定时器寄存器配置、功能工作过程详解

    STM32学习 定时器寄存器配置 功能工作过程详解 零 参考一 引言二 功能以及寄存器说明1 最基本的定时功能 xff08 时基单元 xff09 1 1 框图1 2 工作流程1 3 寄存器介绍1 3 1 CR1寄存器1 3 2 CNT PS
  • 【STM32学习】实时时钟 —— RTC

    STM32学习 实时时钟 RTC 零 参考一 工作原理1 RTC介绍2 工作过程 二 相关寄存器三 代码说明1 rtc初始化2 关于中断3 中断配置代码 xff08 仅供参考 xff09 3 1 秒中断 43 普通闹钟功能3 2 待机模式唤
  • 【JLink仿真器】盗版检测、连接故障、检测不到芯片问题

    JLink仿真器 盗版检测 连接故障 检测不到芯片问题 一 问题描述二 解决方法1 降低驱动 xff08 解决非法问题以及连接故障 xff09 2 SWD引脚被锁 xff08 解决检测不到芯片 xff09 三 说明 一 问题描述 盗版检测
  • 【STM32学习】直接存储器访问——DMA

    STM32学习 直接存储器访问 DMA 零 参考一 对DMA的理解二 DMA通道优先级三 DMA通道x传输数量寄存器 DMA CNDTRx 四 DMA缓冲区设计 零 参考 一个严谨的STM32串口DMA发送 amp 接收 xff08 1 5
  • 【STM32学习】模数转换器——ADC

    STM32学习 模数转换器 ADC 零 参考一 ADC转换耗时二 转换模式三 对某些寄存器的理解1 ADC CR22 ADC SQRX 四 库函数注意事项 零 参考 STM32固件库 xff08 标准外设库 xff09 入门学习 第七章 A
  • 【面试】嵌入式C语言题目整理

    面试 嵌入式C语言题目整理 描述内存四区 内存四区分为 xff1a 代码区 静态区 堆区 栈区 代码区就是用来存放代码的 静态区用来存放全局变量 静态变量 常量 xff08 字符串常量 const修饰的全局变量 xff09 堆区中的内存是由
  • 【总线】IIC学习笔记

    总线 IIC学习笔记 参考链接IIC总线介绍IIC总线时序1 空闲信号2 启动信号与停止信号3 数据的有效性4 应答信号5 七位地址传输 IIC读写过程 xff08 AT24C02举例 xff09 IIC读过程IIC写过程 正点原子IIC驱
  • 树莓派下载及安装PyCharm软件

    运行 PyCharm 需要 Java 环境 xff0c 如果树莓派上还没有安装过 JRE xff0c 可以使用以下命令安装即可 xff1a sudo apt install default jre y PyCharm 有专业版和社区版 专业
  • QT 建立透明背景图像QPixmap

    列将下面背景透明图片1转变成图片2 图1 图2 span class hljs preprocessor include 34 mainwindow h 34 span span class hljs preprocessor includ
  • putty 登录出现Network error: connection time out 解决方案

    今天用putty登录我的linux主机 出现Networkerror connection time out 然后我从linux系统上登录 xff0c 当是没法联网 xff0c pingwww baidu com 则提示 xff1a pin
  • 大端字节序与小端字节序的转换

    逐步加深对字节操作的理解 xff0c 记录一下大端字节序与小端字节序的转换 xff0c 开发环境是vs2010 xff0c 项目类型是控制台输出程序 xff0c 下面是代码实现 xff1a span class token comment
  • c++面试常见问题总结

    近来在面试的过程 xff0c 发现面试官在c 43 43 方面总是喜欢问及的一些相关问题总结 xff0c 当时没怎么答出来 xff0c 或者是答的不怎么全面 xff0c 故而查询相关资料总结下 后面实际工作会进行实时更新信息 lt 一 gt
  • Prometheus(普罗米修斯)架构及原理

    prometheus架构图 xff1a 如上 xff0c prometheus 采集数据的主要方式是 server 通过http请求去 主动拉取 数据 要完成以上需求 xff0c 必须满足以下条件 xff1a server必须知道各种 ex
  • mujoco强化学习模拟环境的安装(windows10)

    最近在学强化学习 xff0c 学长推荐用mujoco来做仿真环境 原本我是想照着教程安装的 结果最近mujoco被DeepMind收购了 xff0c 现在是开源的 xff0c 许多安装步骤都不太一样了 xff0c 所以我就写了这篇安装教程
  • Apple苹果寻物Airtag真实模型拆解及复现stp文件

    Apple苹果寻物Airtag真实模型拆解及复现stp文件 Airtag拆解复现对比 xff1a 欢迎下载stp结构源文件 xff0c 文件可编辑 xff0c 文件下载链接 xff1a https download csdn net dow
  • 使用STM32CubeMX 配置ADC+DAC(DMA)感受

    STM32CubeMX使用感受 开篇先说一下个人使用STM32CubeMX的感受 xff0c 第一点的感受就是STM32CubeMX加速了开发流程 xff0c ST官方的库写的很好 xff0c 在使用之前 xff0c 开发流程一般是打开如正