本文以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的请求。
-
STM32
+关注
关注
2274文章
10929浏览量
358003 -
dma
+关注
关注
3文章
566浏览量
101100 -
串口中断
+关注
关注
0文章
67浏览量
14023 -
USART串口
+关注
关注
0文章
32浏览量
6903
发布评论请先 登录
相关推荐
STM32标准库、HAL库和LL库介绍
![<b class='flag-5'>STM32</b>标准<b class='flag-5'>库</b>、HAL<b class='flag-5'>库</b>和<b class='flag-5'>LL</b><b class='flag-5'>库</b>介绍](https://file1.elecfans.com/web2/M00/8A/74/wKgaomSSohuAHF7tAAIG25O3CEQ557.jpg)
【NUCLEO-L476RG LL库开发】STM32【LL库】开发使用指南
STM32四种库对比:寄存器、标准外设库、HAL、LL
![<b class='flag-5'>STM32</b>四种<b class='flag-5'>库</b>对比:寄存器、标准外设<b class='flag-5'>库</b>、HAL、<b class='flag-5'>LL</b>](http://mouser.eetrend.com/files/2020-11/博客/100059039-113438-1.jpg)
STM32CubeMX 实战教程:看门狗实验(LL 库)
![<b class='flag-5'>STM32</b>CubeMX 实战教程:看门狗实验(<b class='flag-5'>LL</b> <b class='flag-5'>库</b>)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用LL库开发STM32:GPIO口与外部中断
![使用<b class='flag-5'>LL</b><b class='flag-5'>库</b><b class='flag-5'>开发</b><b class='flag-5'>STM32</b>:GPIO口与外部中断](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论