ADC-dma死循环问题

2023-11-10

方法一

在这里插入图片描述
在这里插入图片描述
初始化dma时候,里面会先使能dma,然后打开相应的中断,然后结果会导致main函数中卡死
在这里插入图片描述
卡在箭头处,也就是打不开adc和dma

解决方案

全部注释,只留第一个配置dma的函数
在这里插入图片描述
11.16:
补充:同样的现象:程序卡死在HAL_ADC_Start_DMA这个函数里面,下面程序无法运行,但是数组里面一直会接收到数据。

出去上文提到的解决方法外,

还有解决方法2:

在这里插入图片描述
dma初始化一定要在adc初始化之前,否则死循环

解决方法3:

注意缓存的大小
在这里插入图片描述
在这里插入图片描述
内存的缓存区必须是16位的(具体原因不详,实测就是这样,如果改成32位的就是会死循环,原因不详)

cubmax配置图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

总结:

adc和dma一起用的时候,经常会遇到程序卡死的问题(笔者身边的人也经常遇到这类问题),以上三种解决方案一般能处理死循环的问题,如果有新的情况后续会再补充。

个人的想法:

综合上文三种解决方法可以得知,这类问题大多和dma有关,所以我猜测大概率是dma中断和adc中断冲突导致的,第一种解决方法是直接把dma中断注释了,第三种则是吧dma中断优先级调到最高。

前几天参加电赛的过程中用到adc和dma时候遇到这个问题,配置代码配置了很久,一直死循环,这几天翻博客时候发现以前遇到过这种问题,并且还整理了文章,而且我居然一点映像都没有,电赛那几天找到了后面两种解决方法,并且对这篇文章作出补充。

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

ADC-dma死循环问题 的相关文章

  • C# WPF MVVM设计模式下ComboBox的数据源更新的一个问题

    C WPF MVVM设计模式下ComboBox的数据源问题 问题的出现 解决 问题的出现 我在设计一个基于C MVVM 的WPF应用 当我对MainWindow的一个ComboBox进行数据绑定时候 发现当数据源更新后 前台的ComboBo
  • BSN武汉链对接说明

    项目说明 我们项目需要把ETH合约功能迁移到国内链上来 然后基于开发成本等多方面考虑 最终选择了BSN 武汉链接入 相关的BSN文档 BSN 文档地址 对接说明 1 创建BSN帐号 注册并登录bsn官网 网址 BSN官网 点击开放联盟链 g
  • 【Qt】控件探幽——QLineEdit

    注1 本系列文章使用的Qt版本为Qt 6 3 1 注2 本系列文章常规情况下不会直接贴出源码供复制 都以图片形式展示 所有代码 自己动手写一写 记忆更深刻 本文目录 QLineEdit探幽 1 设置数据 获取数据 2 只读 readOnly

随机推荐

  • 2023年华为od机试Java【人气最高的店铺】

    题目 某城市有m个商店和n位市民 现在要举行一场活动 通过投票来选出最受欢迎的商店 每位市民只能投一票 他们将根据自己的喜好为指定的商店投票 然而 1号商店有一个特殊的优势 它可以给每位市民发放补贴 使他们改变投票意向 投票给1号商店 请你
  • 超级计算机是几近制,进制

    进制也就是进位计数制 是人为定义的带进位的计数方法 有不带进位的计数方法 比如原始的结绳计数法 唱票时常用的 正 字计数法 以及类似的tally mark计数 对于任何一种进制 X进制 就表示每一位置上的数运算时都是逢X进一位 十进制是逢十
  • 第 5 章 HBase 优化

    5 1 RowKey 设计 一条数据的唯一标识就是 rowkey 那么这条数据存储于哪个分区 取决于 rowkey 处于 哪个一个预分区的区间内 设计 rowkey的主要目的 就是让数据均匀的分布于所有的 region 中 在一定程度上防止
  • git原理探索实验1——git的三种对象

    背景知识 git的三个区域 working directory 也就是你当前所能操作的那些目录和文件 history 你所提交的所有记录 文件历史内容等等 git是个分布式版本管理系统 在你本地有项目的所有历史提交记录 文件历史记录 提交日
  • MR 从 mysql中 读取 和 写入 数据

    1 编写DBWritable类 import org apache hadoop io Writable import org apache hadoop mapred lib db DBWritable import java io Da
  • ROS Qt环境的搭建及基础知识介绍

    ROS Qt环境的搭建及基础知识介绍 文章目录 ROS Qt环境的搭建及基础知识介绍 1 开发环境搭建 1 1 qtcreator安装 1 2 catkin create qt pkg环境配置 1 3 配置功能包 2 Qt基础 3 Qt编译
  • Python知识点(史上最全)

    Python期末考试知识点 史上最全 python简介 Python是一种解释型语言 Python使用缩进对齐组织代码执行 所以没有缩进的代码 都会在载入时自动执行 数据类型 整形 int 无限大 浮点型 float 小数 复数 compl
  • 区块链节点和用户的介绍

    用户身份 用户身份的概念 用户身份是由用户的公钥地址 用户私钥共同组成 私钥签名 公钥验签 公钥加密 私钥解密 公钥是对外公布的密钥 私钥由用户个人保存 发送交易时用接收方公钥进行加密 发送方私钥进行签名 接收交易时用接收方私钥进行解密 发
  • 【项目实战】基于python+pycharm+OpenCV的信用卡数字识别

    一 pycharm实现参数配置 直接运行程序会报错 usage ocr template match py h i IMAGE t TEMPLATE ocr template match py error the following arg
  • 当AI遇到IoT:开启智能生活的无限可能

    文章目录 1 AI和IoT的融合 1 1 什么是人工智能 AI 1 2 什么是物联网 IoT 1 3 AI和IoT的融合 2 智能家居 2 1 智能家居安全 2 2 智能家居自动化 3 医疗保健 3 1 远程监护 3 2 个性化医疗 4 智
  • 泰勒(Taylor)公式

    泰勒公式 如果函数f x 在含的某个开区间 a b 内具有直到 n 1 阶导数 则可以用泰勒展开公式去逼近原函数 麦克劳林公式 特殊 0 几个常见的初等函数的带有佩亚诺余项的麦克劳林公式
  • Windows10本地搭建网站教程 - 内网穿透发布公网访问

    文章目录 概述 1 搭建一个静态Web站点 2 本地浏览测试站点是否正常 3 本地站点发布公网可访问 3 1 安装cpolar内网穿透 3 2 创建隧道映射公网地址 3 3 获取公网URL地址 4 公网远程访问内网web站点 5 配置固定二
  • 硬件3D加速指南

    硬件3D加速指南 内容 1 解释 2 安装Xorg和配置内核 3 配置直接渲染 4 测试3D加速 5 疑难解答 6 参考 1 解释 什么是硬件3D加速 为什么我需要它 使用硬件3D加速 三维渲染将会使用显卡上的图形处理器来进行 而不会占据宝
  • macOS 软件推荐&避雷指南 - 让 mac 更像 windows 的装机必备软件

    网络上有很多 macOS 软件推荐的文章 但是那些文章大部分有下面的问题 没有结合使用场景 没有差评 从来不会说一个软件有什么缺点 是否稳定 所以这篇文章就围绕下面 2 点展开 安装哪些软件 可以让 macOS 的体验更加接近 window
  • 解决maven依赖冲突,这篇就够了!

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • Python电脑随机生成1~100之间的整数, 让用户来猜,猜错时,会提示猜的数 字是大了还是小了,直到用户猜对为止,游戏结束

    定义一个函数 完成用户输入的三个数字的求和 以及在另一个函数求该和的平均值 用到函数传参 函数返回值 def sum num1 num2 num3 return num1 num2 num3 def average num1 num2 nu
  • AD20批量修改丝印大小、更改丝印字体、丝印显示中文、更改位号丝印 相对元件的位置

    AD默认的丝印不大美观 那么多位号的丝印 想一个个单个去修改显得不现实 这里借助全局批量修改 快速更改丝印的字体 大小 显示中文 相对元件位置 AD20批量修改丝印大小 字体 选中其中一个丝印 右键 查找相似对象 将 Designator
  • COM读书笔记---- 编程工作的简化

    参考书籍 lt
  • Java中InputStream转化为MultipartFile类型

    由于工作需要 涉及到文件类型的转化 实际上MultipartFile有方法可以直接转化为InputStream 但是并没有办法可以从InputStream直接转化为MultipartFile 网上的资料大概看了下 有两种简单的方案Commo
  • ADC-dma死循环问题

    方法一 初始化dma时候 里面会先使能dma 然后打开相应的中断 然后结果会导致main函数中卡死 卡在箭头处 也就是打不开adc和dma 解决方案 全部注释 只留第一个配置dma的函数 11 16 补充 同样的现象 程序卡死在HAL AD