STM32G474的HAL_ADC_Start_DMA()传递指针问题

news2024/9/22 9:31:20

1、HAL_ADC_Start_DMA()传递指针问题
函数传递参数中若用到指针,则要注意指针的类型和源数据数据类型要保持一致,否则,会导致内存溢出。
STM32G474的ADC值是12位,HAL库用的是32位指针传输数据,因此,在定义保存ADC值的数组或变量,必须为32位。
否则在调用HAL_ADC_Start_DMA()时,会导致内存崩溃。分析如下:
HAL_ADC_Start_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length)
这里的pData是指向32为存储单元,如果我们传入的地址是指向16位的存储单元,在向“*pData”写入数据时,
“16位存储单元”会发生溢出。
uint32_t ADC1_RESULT[2];没有问题
uint16_t ADC1_RESULT[2];可能会导致内存溢出
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)ADC1_RESULT,2);

2、测试程序 

typedef struct 
{ uint8_t Byte1;
    uint8_t Byte2;
    uint8_t Byte3;
    uint8_t Byte4;
}Uint8_Data_TYPE;

typedef struct 
{ uint16_t Data1;
    uint16_t Data2;
}Uint16_Data_TYPE;

typedef union
{ Uint8_Data_TYPE  U8Data;   //U8Data.Byte1和U32Data的最高8位值相等;
    Uint16_Data_TYPE U16Data;  //U16Data.Data1和U32Data的高16位值相等;
  uint32_t         U32Data;
}U32_Data_TYPE;

U32_Data_TYPE MyData;

void Read_DAta(uint32_t *pData)
{
    *pData=0x12345678;
}

void PrintMyData(void)
{
    MyData.U32Data=0x00000000;
    printf("MyData.U32Data=0x%X\r\n",MyData.U32Data);
    Read_DAta( (uint32_t*)&MyData.U8Data.Byte1 );
    //MyData.U8Data.Byte1是一个字节型数据
    //如果将它的地址强制转换32位指针,使用这个指针修改数据,可能让内存崩溃

    printf("MyData.U32Data=0x%X\r\n",MyData.U32Data);
    printf("MyData.U8Data.Byte1=0x%X\r\n",MyData.U8Data.Byte1);
    printf("MyData.U8Data.Byte2=0x%X\r\n",MyData.U8Data.Byte2);
    printf("MyData.U8Data.Byte3=0x%X\r\n",MyData.U8Data.Byte3);
    printf("MyData.U8Data.Byte4=0x%X\r\n",MyData.U8Data.Byte4);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习入门-09

基于小土堆学习 1、卷积层 卷积操作涉及到一个称为“卷积核”或“滤波器”的小窗口,在输入数据上滑动,并对每个位置上的数据进行加权求和,可能还会加上一个偏置项。这个加权求和的结果就构成了输出特征图(feature map&#xff0…

SS-31;Elamipretide;伊拉米肽;线粒体靶向抗氧化剂SS-31肽;CAS:736992-21-5

【SS-31 简介】 SS-31肽是一种心磷脂过氧化物酶抑制剂和线粒体靶向肽。 它可以改善左心室和线粒体功能。SS-31肽可减轻 人小梁网状细胞中的线粒体功能障碍和氧化损伤。它可以防止iHTM和GTM(3)细胞受到H2O2诱导的持续氧化应激。慢性心力衰竭和线粒体肌病的I期临床试验正在进行中…

EPLAN中绘制多线原理图以及插入符号元件

EPLAN中绘制多线原理图以及插入符号元件 如下图所示,新建并打开多线原理图,点击菜单栏中的插入—电位连接点, 插入所需的电位连接点; 如下图所示,点击项目数据—符号,这样可以打开符号选择的导航器&#…

07 - procfs

---- 整理自 王利涛老师 课程 实验环境:宅学部落 www.zhaixue.cc 文章目录 1. procfs 快速入门2. procfs 文件创建的回调机制3. 在 proc 目录下创建子目录4. 通过 proc 接口修改内核变量5. 通过 proc 接口访问数组6. 序列文件:seq_file 编程接口7. seq_f…

Hbase离线迁移

假设是hbase集群,那么数据存储在hdfs上。 1.关闭2个hbase 2.使用distcp 将hdfs上的hbase数据迁移到另一个【相同路径】的hdfs上。 不知道目录的话,可以find / -name hbase-site.xml找一下。 hadoop distcp -Dmapreduce.job.hdfs-servers.token-renew…

XtQuant接口概述,想用miniQMT做量化哪家券商支持?

XtQuant.XtData 行情模块 xtdata是xtquant库中提供行情相关数据的模块,本模块旨在提供精简直接的数据满足量化交易者的数据需求,作为python库的形式可以被灵活添加到各种策略脚本中。 主要提供行情数据(历史和实时的K线和分笔)、…

无人机喊话器详解!!!

无人机喊话器,也被称为无人机扬声器,是一种安装在无人机上,用于通过空中向地面人员传递声音的设备。 一、功能特点 远程传递声音:无人机喊话器能够在较远的距离内清晰地传递声音,有效广播范围通常可达数百米甚至更远…

Linux下单网卡配置多个路由ip方法

Linux下配置网卡ip别名何谓ip别名 用windows的话说,就是为一个网卡配置多个ip。 什么场合增加ip别名能派上用场? 布网需要、多ip访问测试、特定软件对多ip的需要 下面通过几个例子简单介绍一下如何使用ifconfig命令给网卡配置ip别名。 一、首先为服务器…

会员通知短信怎么利用NodeJS发送短信

会员通知群发短信以其即时高效、高打开率、个性化定制、成本效益高、跨平台兼容以及法律合规等优势,在现代会员管理和营销策略中占据了重要地位。对于希望提升会员沟通效率、增强用户粘性和促进业务增长的企业而言,合理利用群发短信工具无疑是一个明智的…

left join 使用 sum()

一,表结构 表一,test_group 分组表 表二,test_user 用户表 test_group 和 test_user 是一对多的关系 二,sql 统计一班的总得分和所有用户的总年龄 SELECT SUM(a.score),SUM(b.age),a.groupname from test_group a LEFT JOIN…

Keepalived高可用配置服务器集群

前言 上章完成了通过nginx对服务器配置了负载均衡,保证了一个服务器宕机另一个服务器顶上,但是有一个问题出现了,如果nginx宕机了怎么办,这章会对这个问题进行讲解,配置集群来保证nginx宕机下一个顶上来,服务器一直能提供服务当一台服务器宕机的时候把从服务器切换为主,提供虚…

【机器人学】7-3.六自由度机器人自干涉检测-圆柱体的旋转变换【附MATLAB代码】

前言 上一章确定了机械臂等效的圆柱体的上下圆心坐标,这篇文章将解决算法三个核心中的第二个核心: 一 根据机械臂的几何数据以及DH参数,确定机械臂等效的圆柱体的上下圆心坐标。 二 将一个圆柱体旋转到与坐标Z轴对齐,另一个圆柱…

华为机考笔试没有结果?

点击上方"互联网求职达人",选择"设为置顶or星标" 第一时间获取最实用的求职以及备考信息 华为机考笔试范围是什么?​https://mp.weixin.qq.com/s?__bizMzU2NjE0NjMxNg&mid2247483962&idx1&sn69b0b152dd8e7ebe9ddb356b…

livekit 环境搭建

目录 livekit介绍 搭建开发环境 goland编译 运行server 启动server 通过lk命令加入房间 通过web打开本地摄像头 通过goland调试livekit livekit介绍 livekit是一个开源的webrtc服务器,性能十分强大,房间管理、redis、信令业务、流媒体sfu都支…

PMP备考经验 | 如何做到一次考过3A?

一,直播课的学习 面对大量场景阅读题,且刷题也基本没原题的PMP考试,从报名的时候就知道临考刷题大法肯定是行不通的,也想把这个证好好学下去真的成为项目管理专家。 于是第一个周末的直播课两天跟随听课,认真做笔记&am…

数据结构——链表学习

数据结构初步了解 链表是数据结构的一部分,所以我想先理清数据结构的要点: 它们说:程序算法数据结构,在计算机中,把所有可以输入到计算机中能被计算机进行处理的符号的总称叫做数据。 数据结构包括两部分&#xff0…

美畅物联丨物联网平台的标准化之路:物模型设计的创新及应用

随着物联网(IoT)技术以前所未有的迅猛之势蓬勃发展,海量的物联网终端与应用纷纷接入,这不可避免地引发了数据与应用层面的异构化难题,进而形成了复杂且多变的碎片化问题。物联网感知数据因其具备多源异构的显著特性&am…

基于vue框架的病房管理系统设计与实现uilp1(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:患者,医护人员,患者病历,医院病房,住院信息,科室,病房预约,住院费用 开题报告内容 基于Vue框架的病房管理系统设计与实现开题报告 一、引言 随着医疗信息化建设的不断深入,病房管理作为医院日常运营的核心环节之一&#x…

VMware Workstation虚拟机 + 许可证密钥

VMware Workstation虚拟机 许可证密钥 VMware Workstation是什么?VMware简介VMware 安装VMware系统要求VMware 版本下载地址许可证序列码看这里 !!!!! VMware Workstation是什么? VMware简介 …

揭开容器的面纱:容器技术全景概述

随着云计算的快速发展,容器技术已经成为IT行业的重要组成部分。Docker作为一种领先的容器化技术,为应用程序的开发、部署和运行带来了革命性的变化。本篇文章将详细介绍容器技术的概念、发展历程及其在现代计算中的应用。通过对Docker的深入了解&#xf…