news 2026/8/7 20:24:48

理解DMA双缓冲的原理和意义(CPU和DMA:并发并行和回调函数)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
理解DMA双缓冲的原理和意义(CPU和DMA:并发并行和回调函数)

这篇文章弄懂了 , 对计算机硬件包括软件编程会上一个很大的台阶

引子

回调函数在函数调用时 , 是并行计算吗?计算单元

这个系统里有很多个计算单元 , CPU 、 FPU 、 ADC 都是计算单元 , 计算单元的本质就是些门电路 , 或者晶闸管之类的东西凑成的触发器, 后来用的是mos管 ,但这些本质都是门电路 , 本质上都是用于计算的 ,除此之外 , MPU 、ETM、 DMA也都具备计算能力

ADC

ADC 本质上也相当于一个CPU ,它也是一个可以参与计算的 , 其原理就是通过电压逐次比较 , 然后计算出来一个字节

并行

前面铺垫了这么多 , 究竟什么是并行, 比方说CPU从ADC里面取数据搬运到SRAM里面 , 但是系统其他计算单元不工作岂不是浪费了 , 我们是不是可以尝试在不冲突的前提下多线运行 , 这时可以让DMA去SRAM里面搬运数据 , 将片1的内存搬运到片2 ,所以CPU在跟ADC搬运前 , 它可以跟DMA” 说句话 “ ,让他在SRAM上将地址片一搬运到地址片2 , 这样在ADC和CPU工作的时候 , DMA也在同时工作

它在干活 , 它也在干活 , 这个就是并行

并发

在一个很短的时间内 , 假如说1ms的时间内, CPU与ADC通信这件事跟DMA搬运SRAM这件事 , 顺序的发生了 , 就叫并发 , 这个时间并不限制与1ms , 只是举个例子 , 也可以是0.5ms

同一个时刻在干两件事情 叫做并行

回调函数在函数调用时 , 是并行计算吗?

情况一:有DMA&并行

这个函数就是回调函数的一种, 在ADC数据搬运完之后 ,怎么告诉CPU呢?

就是通过这个函数 , 进入一个中断

在HAL_ADC_Start_DMA这个函数里,他会把一个回调函数注册给DMA的一个函数指针 , 作为这个回调函数的接口

也就是说ADC的数据传输完成了,DMA就会让CPU来处理这个回调函数 , 来处理ADC

所以这样的话 , 整个系统 , 就是在并行的

情况二:并发

假设在5ms内, 系统有 task1 , task2, task3 几个任务

task1 假设就是HAL_ADC_Start_DMA , 但是没有用DMA

task2 假设是save_ADC

task3 假设是decode_ADC

假设有三个ADC , ADC(1-3)

并没有依次启动1-3 , 当启动到ADC3的时候 , 12其实已经好了 , 但是因为程序流程的问题只能从上执行到下 , 在一个task里面 , 这时就可以用回调函数去解决一个事情 ,假设startADC1执行完以后 , save ADC 1 也完成了 , 就可以发送一个信号量给回调函数 , 告诉他有数据可以进行解包了 ,这个时候decode函数就可进行解码了

这个回调函数的作用就是:启动解包

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 14:58:20

主散线指标 通达信源码

{}M:60; N:30; 散户线: 100*(HHV(HIGH,M)-CLOSE)/(HHV(HIGH,M)-LLV(LOW,M)),COLORGREEN,LINETHICK2; RSV:(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:SMA(RSV,5,1); D:SMA(K,3,1); J:3*K-2*D; 主力线:EMA(J,6),COLORRED,LINETHICK2; VAR2:REF(LOW,1); VAR3:SMA(ABS(L…

作者头像 李华
网站建设 2026/8/7 21:30:20

提升开关频率(一) PRISEMI芯导科技MOSFET工艺结构的发展与演进

在手机快充、新能源汽车电驱、光伏逆变器等电力电子设备中,藏着一个关键“电子开关”——功率MOSFET。它的核心使命是快速控制电流的通断,而“开关频率”直接决定了设备的体积、效率和性能。频率越高,能量转换效率也越高。从早期的平面结构到…

作者头像 李华
网站建设 2026/8/7 10:53:19

音频录制和编辑软件

链接:https://pan.quark.cn/s/ead22a2177a3Reaper软件是一款非常强大的音频处理的工具,能够处理和制作多种音频的内容,让音频能够满足用户个人的需求,从软件上面来处理你所需要的音频,并且这款软件还是完全的免费的&am…

作者头像 李华
网站建设 2026/8/7 15:26:14

Quick CPU(CPU性能优化软件)

链接:https://pan.quark.cn/s/bd60bc94b310Quick CPU是一款功能强大的CPU监控软件,能够帮助用户随时监测CPU的运行情况,为CPU的优化提供了帮助。软件提供了Core Parking、频率缩放、Turbo Boost、C状态/变速等调整功能,满足用户的…

作者头像 李华