DMA的概念(直接存储器访问)
1.用于在外设与存储器之间以及存储器与存储器之间的高速数据传输,DMA传输过程中的初始化和启动,由CPU完成,传输过程由DMA控制器来执行,无需CPU参与,从而节省CPU资源,提高利用率
2.DMA传输方式无需CPU直接控制传输,没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,从而使CPU的效率大大提高
DMA数据传输的四个要素
1.传输源:DMA数据传输的来源,
2.传输目标:DMA数据传输的目的,
3.传输数量:DMA传输数据的数量,
4.触发信号:启动一次DMA数据传输的动作
STM32_DMA
1.两个DMA模块:DMA1和DMA 2
2.两个DMA控制器共有12个通道,每个通道用专用于管理来自一个或多个外设的内存访问请求,每个控制器都有一个仲裁器,用于处理DMA请求之间的优先级
3.支持外设到内存,内存到外设,内存到内存和外设到外设的数据传输
4.每个通道与来自外设的DMA请求信号或内存到内存传输中的软件触发器相关联,此配置由软件完成
5.请求之间的优先级可由软件每个通道四个级别(非常高,高、中、低)和硬件编程(例如对通道一的请求优先于对通道二的请求)
6.源和目标的传输大小是独立的(字节、半字、字),模拟打包和解包,源地址和目标地址必须在数据大小上对齐
7.要传输的可编程数据数:0——65535
STM32_DMAMUX
DMA请求多路复用器
DMA MUX请求多路复用器支持在外设和产品的DMA控制器之间路由DMA请求线,路由功能由可编程多通道DMA请求线多路复用器,确保每个通道无条件的与与来自其DMAMUX同步输入的事件,同步的选择唯一的DMA请求线。DMAMUX还可以用作DMA请求生成器来自其输入触发信号的可编程事件
STM32——DMAMUX
多达16通道可编程DMA请求多路复用器输出
四个通道DMA请求发生器
21个触发输入的DMA请求生成器
21个同步输入
每个DMA请求现多路复用器通道输出
STM32cube初始化
DMA在应用时需要用到串口功能
1.配置好外部时钟
2.配置好相关的LED引脚
3.打开串口
接下来配置DMA
点击Add,会出现select,添加USART1_RX和USART1_TX
初始化完成,接下来编写代码
我们先进行DMA方式的接收和定长发送
接下来进行不定长DMA接收
在主函数里while循环上面使能
在it.c问件中 在main.c文件
Idle回调函数需要在main.h文件中声明,否则it.c文件中的中断服务函数无法使用