草庐IT

STM32F429 Discovery开发板应用:使用FreeRTOS队列+DMA双缓存实现串口数据接收

 参考帖子:https://blog.csdn.net/freedompoi/article/details/122350866目前想要实现STM32F4自带的DMA双缓冲区,尝试过一版,结果不能预期,就使用了RxHalfCplt和RxCplt去实现DMA双缓冲区的效果。现在有时间了,又重新实现STM32F4自带的DMA双缓冲区,作为参考。 MCU:STM32F429ZIT6开发环境:STM32CubeMX+MDK5 此时,双击完后会关闭此界面,然后打开一个新界面。 然后,我们开始基本配置。 现在我们选择一个LED作为系统LED,该步骤可以忽略,只是本人喜欢这样子。以硬件原理图的LD3为例子。

STM32实战总结:HAL之DMA

什么是DMA?“DMA”是DirectMemoryAccess的缩写。不使用CPU,而是通过总线直接进行外围功能(模拟功能、通信功能等)和存储器间(闪存、ROM、RAM)的数据传输的功能。通常,数据传输由CPU执行,而在装有DMA的微型计算机中,DMA代表CPU传输数据。因此,CPU只需要算术/逻辑运算等CPU才能完成的工作就可以了。其结果是,通过安装DMA,可以综合提高微型计算机的性能。DMA的最大优势是通过硬件直接传输数据,从而实现高速、大容量的数据传输。您可以在内存和外围功能中自由选择传输源和传输目的地(但受微型计算机的限制)。但是,由于只有一条总线和CPU分开使用,所以需要调整总线的使

memory - PCI Express BAR 内存映射基本理解

我正在尝试了解PCIExpress的工作原理,以便我可以编写一个Windows驱动程序,该驱动程序可以读取和写入没有板载内存的自定义PCIExpress设备。我了解PCIE配置空间中的基地址寄存器(BAR)保存PCIExpress应响应/允许写入的内存地址。(理解正确吗?)我的问题如下:在谈到PCIE时,与物理地址相比,什么是“总线特定地址”?BAR何时以及如何填充地址?驱动程序是否负责分配内存并将地址写入外围BAR?将数据从外围设备传输到主机内存时是否使用DMA?感谢您的宝贵时间。最好的问候, 最佳答案 我还在使用自定义板开发设备

memory - PCI Express BAR 内存映射基本理解

我正在尝试了解PCIExpress的工作原理,以便我可以编写一个Windows驱动程序,该驱动程序可以读取和写入没有板载内存的自定义PCIExpress设备。我了解PCIE配置空间中的基地址寄存器(BAR)保存PCIExpress应响应/允许写入的内存地址。(理解正确吗?)我的问题如下:在谈到PCIE时,与物理地址相比,什么是“总线特定地址”?BAR何时以及如何填充地址?驱动程序是否负责分配内存并将地址写入外围BAR?将数据从外围设备传输到主机内存时是否使用DMA?感谢您的宝贵时间。最好的问候, 最佳答案 我还在使用自定义板开发设备

STM32F103采用DMA方式多路ADC采样

STM32F103采用DMA方式多路ADC采样文章目录STM32F103采用DMA方式多路ADC采样前言一、头文件adc.h二、初始化配置1.ADCGPIO配置2.开启ADC和DMA时钟3.多路ADCDMA采样配置三、软件滤波四、主函数调用1.初始化函数配置2.main函数调用总结前言stm32采用DMA方式进行ADC采样可以高效的进行数据采集,不用cpu实时参与,以节省单片机资源,让单片机可以在同一时间里干更多事,STM32F103ADC为12位ADC的,是一种逐次逼近型模拟数字转换器,它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行

关于STM32用DMA传输UART空闲中断中接收的数据时无法接收数据问题以及解决办法

一、stm32cubeide配置1、DMA串口接收数据的ide配置如下图所示        串口1相关的设置及printf函数的使用,这里没放,建议先实现串口打印功能可以参考:使用STM32CUBEIDE配置STM32F7用DMA传输多通道ADC数据_stm32cubeide配置adc_一只小白啊的博客-CSDN博客2、相关的知识点        普通模式和循环模式的区别在于,普通模式下,DMA只会接收一次数据,接收完成后就会停止,需要接收时再开启;而循环模式下,DMA会一直接收数据,直到接收缓存区满或者手动停止。      根据自己需求定模式,如果是数据有间隔,空闲中断的这种情况下,处理一帧

STM32—DMA功能讲解串口发送

目录一、DMA基本介绍1、DMA的定义2、DMA数据传输二、DMA功能框图​编辑 1、DMA请求2、通道3、仲裁器三、DMA数据配置1、传输方向及地址2、传输数据大小及单位3、传输完成三、DMA初始化结构体详解1、DMA_InitTypeDef初始化结构体配置2、程序设计1、存储器到存储器2、存储器到外设3、问题总结一、DMA基本介绍1、DMA的定义  DMA(DirectMemoryAccess)—直接存储器存取,DMA控制器独立于内核,结构比较简单,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用CPU,即在传输数据的时候,CPU可以干其他的事情,好像是多线程一样。数据传输支持

【lwIP(第二章)】以太网DMA

目录一、以太网DMA描述符简介二、以太网DMA描述符结构三、如何追踪描述符总结一、以太网DMA描述符简介发送:不需要CPU的参与下,把描述符指向的缓冲区数据传输到TxFIFO当中接收:不需要CPU的参与下,将RxFIFO中的数据传输到描述符指向的缓冲区当中常规描述符结构/*stm32f4/f7/h7xx_hal_eth.h*/typedefstruct{ __IOuint32_tStatus; /*状态*/ uint32_tControlBufferSize; /*缓冲区1和2的大小*/ uint32_tBuffer1Addr; /*缓冲区1的地址*/ uint32_tBuffer2N

【lwIP(第二章)】以太网DMA

目录一、以太网DMA描述符简介二、以太网DMA描述符结构三、如何追踪描述符总结一、以太网DMA描述符简介发送:不需要CPU的参与下,把描述符指向的缓冲区数据传输到TxFIFO当中接收:不需要CPU的参与下,将RxFIFO中的数据传输到描述符指向的缓冲区当中常规描述符结构/*stm32f4/f7/h7xx_hal_eth.h*/typedefstruct{ __IOuint32_tStatus; /*状态*/ uint32_tControlBufferSize; /*缓冲区1和2的大小*/ uint32_tBuffer1Addr; /*缓冲区1的地址*/ uint32_tBuffer2N

STM32基于hal库的adc以DMA的多通道采样以及所遇问题解决

目录准备配置步骤 总结 准备正点原子的STM32F103ZET6开发板(精英版)CUBEMX配置软件KEIL5配置 右对齐就是正常的数据格式。左对齐除以16后得正常数据。(当输出非常大时考虑是否改了对齐方式,默认都是右对齐) 扫描模式,连续转换模式使能。(多通道下扫描模式自动使能)采样周期SamplingTime越大越精确,越小则则会频繁触发DMA中断(在开启dma中断时,我试了在14M的adc时钟程序进不来while(因为频繁触发DMA中断)看数据手册,知道三个adc中(adc1,adc2,adc3只有adc1和adc3能用DMA通道。 ADC的时钟不能超过14Mhz,配置外设到内存(cub