
本文以stm32 F303K8为例,不同型号的DMA配置方法略有不同。 本文设计的实验如下:通过USART2接收数据,并通过DMA将串口接受数据循环存入长度为100的uint8型数组。 思维导图总览: ![]() 1- 时钟配置 ![]() 有stm32基本知识应该知道Stm32的每个外设在使用前都需要开启其时钟,否则模块不运行。 2 - DMA配置 使用DMA前要确定外设与DMA连接的通道,不用系列芯片的硬件设计略有不同,因此要去查对应型号的参考手册。 ![]() F303K8上USART2_RX的请求连接在DMA1的Channel6上。后续的配置都围绕对DMA1的Channel6的配置。 DMA的结构如下,下图截取自F4系列的数据手册,F3的DMA结构与F1的相同,但不影响借用F4的DMA结构图对配置方法进行理解。 ![]() 要配置的内容及API如下: ![]() ![]() 这里没有使用DMA的中断,因此没有对具体的中断进行使能。 3 - 使能外设发出DMA请求 ![]() DMA是在外设或软件Requst之后才会发起传输,所以要使能外设发出DMA请求,这里是USART2_RX的请求。 转载自: Vulcan |
经验分享 | STM32双定时器+ADC+DMA实战案例
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
经验分享 | 基于STM32H7 UART 空闲事件及DMA传输示例
经验分享 | 关于STM32 DMA传输的两个问题释疑
经验分享 | STM32G4 UART+TIMER+DMA应用示例
经验分享 | STM32 TIMER+DMA输出PWM异常二案例
经验分享 | STM32H7 EXTI + SPI +DMA 双缓冲应用演示
经验分享 | STM32H563 UART+DMA 2D功能演示
经验分享 | 基于STM32H563 USART演示DMA链表功能
经验分享 | 基于STM32H563演示UART+DMA功能