【STM32G431RBT6】蓝桥杯嵌入式 ADC采样DMA传输配置

MCU_STM32F4XX_HAL_ADC_Start_DMA只能触发一次的问题 说明:这可能是STM32F4XX芯片的一个BUG。有些时候,单片机的问题非常奇怪,单一功能使用的时候没有问题,但同样的代码,在大型工程中漏洞百出;作为用户,我们无法知道芯片内部到底发生了什么,因为也只能一步步随机尝试。 问题:一个大型工程,在加入ADC的时候,发现HAL_ADC_Start_DMA始终只能触发一次,后续无论怎么Start,都没能成功。 在记录一下追踪的前因后果和解决方案。 使用STM32CubeMX的精简调试方案没有问题 在找问题的过程中,首先是用CubeMX创建一个工程调试一下。为 阅读详情
AI摘要

本文介绍了基于STM32G431RBT6的嵌入式开发板进行ADC采样和DMA传输的实践。通过STM32CubeMAX配置,设置ADC通道及时钟,实现直接采样和DMA连续传输两种模式,并提供了相应的程序代码。实验中,通过LCD显示ADC采样的电压值,展示了ADC采样数据的实时处理和DMA的高效传输特性。

一、介绍

蓝桥杯嵌入式开发板使用的是STM32G431RBT6,这个G系列的mcu使用STM32cubemax配置的时候和普通的F系列不太一样。

二、原理图

同时开发板预留了两个adc采样通道,分别是PB15和PB12,如果需要adc采样的话,这里我们这里使用两种方式,一种是adc直接采样CPU处理数据,另外一种是采用ADC采样加DMA传输。
在这里插入图片描述

三、STM32CUBEMAX配置

时钟配置 :输入外部高速时钟为24MHZ,这里可以将主频调至170MHZ。
在这里插入图片描述

ADC配置 :PB15和PB12位ADC输入
在这里插入图片描述

3-1 ADC直接采样

将IN11通道设置为single-ended
ContinuousConvMode = DISABLE;
DMAContinuousRequests = DISABLE;
其他配置不变

在这里插入图片描述

3-2 ADC采样+DMA传输

将IN11通道设置为single-ended
ContinuousConvMode = ENABLE;
DMAContinuousRequests = ENABLE;
DMA中断和ADC中断;
DMA设置circular,传输设为word
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、程序代码

注意这里两种配置方式对应不同的采样模式,我的建议的选择一种即可。然后两种的程序代码也不一样。

4-1 ADC直接采样

在主函数中直接调用getADC1()和getADC2()函数就可以完全可以,就是有点浪费资源

/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "adc.h"
#include "dma.h"
#include "usart.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "lcd.h"
#include "stdio.h"
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
uint16_t getADC1(void)	//得到ADC1的值
{
   
   
	uint16_t adc = 0;
	
	HAL_ADC_Start(&hadc1);
	adc = HAL_ADC_GetValue(&hadc1);
	
	return adc;
}

uint16_t getADC2(void)	//得到ADC2的值
{
   
   
	<
蓝桥杯嵌入式基础模块——ADC的使用(新板)STM32G431(HAL库开发) 蓝桥杯嵌入式STM32G431RB配置ADC(HAL库) 阅读详情

相关推荐

【STM32G431RBT6】蓝桥杯嵌入式实战:ADC采样与DMA传输的高效配置指南

本文详细介绍了STM32G431RBT6在蓝桥杯嵌入式竞赛中的ADC采样与DMA传输高效配置方法。通过硬件设计分析、CubeMX配置详解及代码实现,帮助开发者优化采样速率与精度,解决常见问题,提升嵌入式系统开发效率。

weixin_30316097的博客 395

如何用STM32CubeMX快速配置G431的ADC+DMA?蓝桥杯嵌入式高效采样方案

本文为蓝桥杯嵌入式竞赛选手提供了一套基于STM32G431RBT6的高效ADC采样方案。通过STM32CubeMX图形化工具,详细演示了如何快速配置ADC与DMA传输,实现后台自动数据搬运,从而大幅降低CPU占用率,提升系统实时性与采样效率,是应对多任务竞赛场景的必备技能。

weixin_29195217的博客 594

基于STM32G431RBT6最小系统原理图

基于STM32G431RBT6最小系统原理图扩展开发

DMA+多路ADC+定时器+均值滤波.zip

利用定时器触发多路ADC的转换,并将转换的数据利用DMA由adc外设传至二维数组中存储。当二维数组存储满时,利用均值滤波函数实现将ad采集到的数据滤波。

HC-05蓝牙模块详细配置、连接与使用过程

用手按着模块上的按键,再给蓝牙模块上电。当蓝牙模块上的灯慢闪的时候就说明进入了配置模式了。在配置蓝牙的时候一定要将串口助手按这个要求配置:设置波特率 38400,数据位 8 位,停止位 1 位,无校验位,这是固定操作! 根据蓝牙的主从模式进行不同的设置,二者主要区别就在于AT+ROLE这个指令如果这里没返回OK可能有一下几种情况:如果正常返回OK,那就可以进行下一步了 配置蓝牙密码的时候,特别是配置HC05,密码必须加双引号"",否则不能正常设置!!!! 给从机模式蓝牙配置好之后,将蓝牙重

qq_51688022的博客 2万+

第8.1节 满足构网要求的功率器件与散热设计

摘要: 构网型变流器的功率器件选型与散热设计面临严苛要求,需综合考虑过载能力、暂态应力与可靠性。IGBT模块选型需重点评估电压/电流等级、损耗特性及结温波动,而SiC MOSFET虽具有高频低损耗优势,但面临栅极可靠性等挑战。散热设计需采用液冷等先进技术控制结温波动,并通过电热应力仿真和寿命预测实现可靠性优化。系统化选型流程需结合规范要求、工况谱分析和实测验证,为构网型变流器提供坚实的物理基础。

技术工作者 913

Ubuntu 22.04 “软件与更新”装了NVIDIA驱动,WiFi等设备不见了

在Win10装了Ubuntu22.04的双系统,台式机里面有NVIDIA 3080Ti的独立显卡,Ubuntu默认使用的nouveau驱动,需要更换成NVIDIA相应的驱动,在软件和更新里面一键安装了NVIDIA-driver-535-server之后,发现wifi、蓝牙等设备消失了。这个问题的根源据说跟这个nouveau驱动有关,希望linux社区可以解决这个问题。命令安装后 sudo reboot就可以重新看到WiFi以及蓝牙等设备图标了。然后用U盘拷贝到不能上网的Ubuntu22.04系统上,利用。

me_ysd的博客 5855

强化学习 之 Actor Critic

简介 Actor Critic是一种结合体算法: (1)Actor 的前生是 Policy Gradients,这能让它毫不费力地在连续动作中选取合适的动作,而 Q-learning 做这件事会瘫痪; (2)Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法,能进行单步更新,而传统的 Policy Gradients 则是回合更新,这降低了学习效率。 算法思想 Actor...

Test_tju的博客 812

飞书多维表格+影刀RPA:我如何用3个指令搞定每周的销售数据自动汇总(附完整配置截图)

本文详细介绍了如何利用飞书多维表格和影刀RPA实现销售数据的自动化汇总,通过三个核心指令(建立链接、列出记录、更新记录)简化繁琐的手工操作。文章包含完整的配置截图和实战指南,帮助用户快速部署自动化流程,提升工作效率。

weixin_29273849的博客 285

Goldwasser-Micali 公钥加密系统

1、二次剩余问题 对于整数n ,定义Zn∗={a∈Zn,gcd(a,n)=1}Z^*_n=\{ a∈Z_n,gcd(a,n) =1\}Zn∗​={a∈Zn​,gcd(a,n)=1} 。当存在d∈Znd \in Z_nd∈Zn​ ,使得 d2≡a mod nd^2 \equiv a \, mod \,nd2≡amodn ,称 a 为模 n 的二次剩余;否则称 a 为模 n的二次非剩余。判断 a 是否为模 n 的二次剩余的问题称为模n 的二次剩余问题。 \rule[-10pt]{14.3cm}{0.05em}

不染心的博客 4314

Pulseaudio之同步/异步(十一)

PulseAudio是一个声音服务器,一个后台进程从一个或多个音源(进程或输入设备)接受声音输入 然后重定向声音到一个或多个槽(声卡,远程网络PulseAudio服务,或其他进程)。 PulseAudio的主要特点包括: 可对每一个应用程序进行音量控制Per-application volume controls 可扩展的插件与支持可装载模块架构 兼容性许多流行的音频应用程序 支持多重音源和多重输出 低延时操作和支持延迟测量 一个对处理器资源效率零拷贝内存架构 能够发现本地网络上使用PulseAu

Android系统攻城狮 1000

药物对接仿真软件:HADDOCK_(3).分子对接基本原理

分子对接(Molecular Docking)是计算化学和结构生物学中的一种重要技术,用于预测小分子(如药物分子)与大分子(如蛋白质)之间的相互作用模式和结合亲和力。这一技术在药物设计和开发中具有广泛的应用,尤其是在寻找和优化潜在的药物候选物方面。本节将详细介绍分子对接的基本原理,包括其理论基础、计算方法和应用。

kkchenjj的博客 1170

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 【ESP32 Arduino平衡小车制作】(一)霍尔编码器解码
下一篇: 【STM32多级界面】-LCD结构体多级图形界面框架
Mount.W
博客等级 码龄7年 477粉丝 35原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值