STM32F1 _DMA_USART

2024-07-30  

前言

今天总结“STM32F103DMA_USART”,DMA学习过计算机人都明白它是什么意思,就是直接存储器存取(Direct Memory Access),很多人都知道它的意思,但基本上不知道的怎么用,或者不知道它的用途。其实DMA在计算机里面是非常重要的,它可以减少CPU的资源。大家都用U盘拷贝过数据,这就是很常见的DMA应用。假如不适用DMA传输数据,我们拷贝大文件的时候,我们的电脑操作其他应用程序的时候估计会把电脑卡死。


今天就总结一下DMA常用于串口通信的例子,实例源代码请自行下载。由于时间有限,只讲解了DMA发送及中断,接收这一块还没有来得及整理,后期我将以实例讲解,请持续关注。


下载

提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。

今天的软件工程下载地址(360云盘):

https://yunpan.cn/cSdzWimMT8v7S访问密码 4a02

STM32F10x的资料可以在我360云盘下载:

https://yunpan.cn/crBUdUGdYKam2访问密码 ca90

内容讲解

工程概要说明: 今天使用DMA1通道4(这里是重点,下面讲解)传输串口发送的数据。工程配置串口使能DMA传输,DMA按要求发送完成会响应DMA中断,这时在中断里变化一次LED,以提示的作用。关于串口使用DMA接收的原理类似,后期我会举例讲解。

提供的工程以简单为原则,详细中文注释,方便自己方便大家。

关于“STM32F103 DMA_USART”我把重要的几点在下面分别讲述:

一、RCC时钟

该函数位于bsp.c文件下面;

注意:

这里是使用RCC_AHBPeriphClockCmd,我开始调试的时候,使用RCC_APB1PeriphClockCmd,怎么都不行,结果我才发现时钟错了。

二、DMA的NVIC配置

该函数位于bsp.c文件下面;

由于使用DMA中断,这里必须配置才能响应中断。

三、DMA输出配置

该函数位于main.c文件下面;

主要就是我框出来的两点比较重要,串口发送数据寄存器地址,中断需要配置。

这里我封装成一个发送函数接口,所以下面是直接调用这个函数。

四、DMA中断

该函数位于stm32f10x_it.c文件下面;

提出来说,有两点:1、函数必须有。2、需要清除标志位。

五、今天的重点

为什么是“DMA1_Channel4”,开始学习的人很纳闷,其实这里是规定的(定的要求,见手册)。

说明

今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。