2026/4/18 9:46:48
网站建设
项目流程
电脑做网站怎么解析域名,设计非常好的网站,南京企业网站,手机云电脑这篇文章弄懂了 #xff0c; 对计算机硬件包括软件编程会上一个很大的台阶引子回调函数在函数调用时 #xff0c; 是并行计算吗#xff1f;计算单元这个系统里有很多个计算单元 #xff0c; CPU 、 FPU 、 ADC 都是计算单元 #xff0c; 计算单元的本质就是些门电路 …这篇文章弄懂了 对计算机硬件包括软件编程会上一个很大的台阶引子回调函数在函数调用时 是并行计算吗计算单元这个系统里有很多个计算单元 CPU 、 FPU 、 ADC 都是计算单元 计算单元的本质就是些门电路 或者晶闸管之类的东西凑成的触发器 后来用的是mos管 但这些本质都是门电路 本质上都是用于计算的 除此之外 MPU 、ETM、 DMA也都具备计算能力ADCADC 本质上也相当于一个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 但是没有用DMAtask2 假设是save_ADCtask3 假设是decode_ADC假设有三个ADC ADC1-3并没有依次启动1-3 当启动到ADC3的时候 12其实已经好了 但是因为程序流程的问题只能从上执行到下 在一个task里面 这时就可以用回调函数去解决一个事情 假设startADC1执行完以后 save ADC 1 也完成了 , 就可以发送一个信号量给回调函数 告诉他有数据可以进行解包了 这个时候decode函数就可进行解码了这个回调函数的作用就是启动解包