前言 今天总结“STM32F103 DMA_USART”,DMA学习过计算机人都明白它是什么意思,就是直接存储器存取(Direct Memory Access),很多人都知道它的意思,但基本上不知道的怎么用,或者不知道它的用途。其实DMA在计算机里面是非常重要的,它可以减少CPU的资源。大家都用U盘拷贝过数据,这就是很常见的DMA应用。假如不适用DMA传输数据,我们拷贝大文件的时候,我们的电脑操作其他应用程序的时候估计会把电脑卡死。 今天就总结一下DMA常用于串口通信的例子,实例源代码请自行下载。由于时间有限,只讲解了DMA发送及中断,接收这一块还没有来得及整理,后期我将以实例讲解,请持续关注。 每天总结的不仅仅是基础,而是重点,不起眼的重点,容易被人忽视的重点。关注微信公众号“EmbeddDeveloper”还有更多精彩等着你。 本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。 下载 提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。 今天的软件工程下载地址(360云盘): STM32F10x的资料可以在我360云盘下载: 内容讲解 工程概要说明: 今天使用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的芯片都适用。 最后 如果觉得内容适合你(如:内容易读易懂等),你又想了解更多相关内容,请关注公众号,新内容持续更新中,后期将会有更多优秀内容出现。 赞是一种鼓励、分享是最好的支持!
|