0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F1 _DMA_USART

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-04-08 10:23 次阅读

前言

今天总结“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的芯片都适用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dma
    dma
    +关注

    关注

    3

    文章

    535

    浏览量

    99046
  • USART
    +关注

    关注

    1

    文章

    186

    浏览量

    30421
  • STM32F10
    +关注

    关注

    0

    文章

    43

    浏览量

    15520
收藏 人收藏

    评论

    相关推荐

    STM32f1怎么判断引起CAN发送中断的ID是哪个?

    STM32f1怎么判断引起CAN发送中断的ID是哪个
    发表于 04-03 07:46

    STM32F1的LL库,RTC怎么不能设置日期?

    STM32F1的LL库,RTC 怎么不能设置日期,只能设置时间。
    发表于 03-29 07:02

    STM32F405 uart DMA收发数据输出乱码怎么解决?

    *p_buffer, uint32_t g_len ){while( !LL_USART_IsActiveFlag_TXE( USART2 ) );LL_DMA_ClearFlag_TC6(
    发表于 03-08 07:38

    请问如何快速移植stm32f1的程序到STM32C0中?

    如何快速移植stm32f1的程序到STM32C0中?
    发表于 03-08 06:54

    STM32F405 DMA+空闲中断接收,DMA_GetCurrDataCounter(DMA1_Stream1)与实际发送数据不符怎么解决?

    我在写STM32F405 DMA+空闲中断接收。用的USART3。 看了网上很多调试的帖子,但都不行。求帮忙! 1)我设置的BufferSize是16,必须要满足16个数后,才能触发
    发表于 03-07 08:28

    STM32F1可以在多少的湿度下正常工作?

    STM32F1可以在多少的湿度下正常工作
    发表于 10-10 07:13

    STM32F1寄存器参考手册

    STM32F1寄存器参考手册中文版
    发表于 10-07 07:50

    基于STM32F1全向轮小车控制代码

    基于STM32F1全向轮小车控制(代码),可直接使用balance软件进行控制,包括MPU6050,CAN,PWM,I2C等模块
    发表于 09-27 06:59

    请问stm32f1系列自带dfu吗?

    请问stm32f1系列自带dfu吗,我知道f4是自带的
    发表于 09-25 07:09

    STM32F1移植到STM32F0的应用笔记分享

    需要将应用程序移植到其它微控制器。另一方面,为了降低成本,用户可能被迫转换为更小的元件并缩减 PCB 面积。本应用笔记旨在帮助您分析从现有的 STM32F1 器件移植到 STM32F0 器件所需的步骤
    发表于 09-22 07:23

    STM32F2直接存储器访问DMA

    /unpack 突发传输模式 通用DMA传输过程 循环模式和双缓冲模式(STM32F2新增) 流控(STM32F2新增) 事件、中断和错误管理 DMA stream配置流程
    发表于 09-13 07:02

    STM32F2通用同步异步收发器

    )SIR ENDEC规范支持Smart Card协议 ·支持LIN协议 发送、接收操作以及DMA特性标志和中断 .STM32F1STM32F2的USART比较
    发表于 09-13 06:08

    基于STM32H563 USART演示DMA链表功能

    STM32H563芯片上的USART3与板载STLINK的VCP相连,通过PC端串口助手软件先后发送3串字符给MCU,MCU的USART3通过DMA以链表模式依次接收并存到相应内存,同
    发表于 08-11 09:11 672次阅读
    基于<b class='flag-5'>STM32</b>H563 <b class='flag-5'>USART</b>演示<b class='flag-5'>DMA</b>链表功能

    STM32F1DMA使用

    在前面我们提到过 DMA,这一章我们就来学习 STM32F1DMA 使 用。要实现的功能是:通过 K_UP 按键控制 DMA 串口 1 数据的传送,在传送过程中让 D2 指示灯不断
    的头像 发表于 06-22 10:23 1559次阅读
    <b class='flag-5'>STM32F1</b>的<b class='flag-5'>DMA</b>使用

    STM32实例教程-DMA实验

    在前面我们提到过 DMA,这一章我们就来学习 STM32F1DMA 使用。要实现的功能是:通过 K_UP 按键控制 DMA 串口 1 数据的传送,在传送过程中让 D2 指示灯不断闪
    发表于 05-24 09:20 774次阅读
    <b class='flag-5'>STM32</b>实例教程-<b class='flag-5'>DMA</b>实验