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

    文章

    582

    浏览量

    106282
  • USART
    +关注

    关注

    1

    文章

    202

    浏览量

    33334
  • STM32F10
    +关注

    关注

    0

    文章

    49

    浏览量

    16305
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32F042x4/STM32F042x6微控制器深度解析:特性、应用与设计要点

    STM32F042x4/STM32F042x6微控制器深度解析:特性、应用与设计要点 在嵌入式系统开发领域,微控制器的选择至关重要,它直接影响着产品的性能、功能和成本。今天,我们就来深入探讨一下意法
    的头像 发表于 03-19 17:15 638次阅读

    LAT1171+STM32F745 USART1 Bootloader 失败原因分析与解决

    使用 STM32F745 进行产品开发的时候,出现了使用 STM32CubeProgramer 无法通过 USART1 Bootloader 进行程序升级的问题。为了解决客户的问题,我在 NUCLEO-
    发表于 01-11 17:33 0次下载

    AT32F系列 PWC USART接收唤醒SLEEP

    USART、GPIO 下载示例 1 快速使用方法硬件资源 1) AT-START-F403A V1.0开发板(其他型号请使用对应的开发板) 2) 串口PA9, PA10 1.2
    发表于 11-05 14:06

    USART1USART2、UART3的串口使用

    本人用蓝牙测试通过了三个串口模块,其中USART1需要重映射配置。USART0我暂时没有启用! 下图是USART1的使用,相关接口映射可以查找“用户指南”,代码在文末(重映射需要开启AF时钟——感谢
    发表于 10-31 09:05

    SDK资源包bug drv_usart.c不能使用UART9及以上的串口怎么解决?

    的问题,USART6复用配置好像也有问题,这个没有细看不是很确定。附上图片 问题三:在stm32_uart_get_dma_config(void)函数中只有串口1至串口6,虽然影响不是很大。
    发表于 09-25 06:37

    GD32的串口DMA收发数据失败怎么解决?

    我在使用RTT的GD32F303的BSP时,配置使用串口DMA收发(rt_device_open),发现错误,最终无法收发数据,对比了STM32的BSP发现在drv_usart.c中
    发表于 09-17 06:04

    STM32H743 UART DMA接收不到数据是为什么?

    _REQUEST DMA_REQUEST_USART3_RX #define UART3_RX_DMA_IRQDMA1_Stream1_IRQn #endif main.c代码如下 #include #include
    发表于 09-11 07:14

    制作STM32F1开发板的BSP失败的原因?

    \\bsp\\stm32\\stm32f10x_template,然后通过Keil5打开工程并编译,出现如下错误: compiling stm32f1xx_hal_nor.c... \"
    发表于 08-29 07:42

    STM32F405RGT6 ADC2+TIM4触发+DMA(DMA2_Stream2_CH1)+DMA中断会死机,怎么解决?

    ADC1+TIM4触发+DMA(DMA2_Stream0_CH0)+DMA中断完全正常更改为ADC2+TIM4触发+DMA(
    发表于 08-04 07:16

    STM32F10xxx参考手册

    STM32F1XX数据手册中文版
    发表于 07-10 16:09 10次下载

    STM32F407多机RS485串口通讯+地址位唤醒+DMA空闲线接收,无法进入中断服务程序怎么处理?

    / hdma_usart3_rx.Instance = DMA1_Stream1; hdma_usart3_rx.Init.Channel = DMA
    发表于 07-10 07:28

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册

    电子发烧友网站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4编程手册.pdf》资料免费下载
    发表于 06-06 17:06 17次下载

    STM32F40xxx和STM32f41xx flash编程手册

    PM0081_STM32F40xxx and STM32F41xxx单片机编程手册
    发表于 06-06 17:02 8次下载

    小马哥STM32F1主控720空心杯四轴飞行器资料(包含源代码和相关教程)

    小马哥STM32F1主控720空心杯四轴飞行器资料(包含源代码和相关教程),推荐下载!
    发表于 05-29 21:51

    小马哥STM32F1主控720空心杯四轴飞行器资料(包含源代码和相关教程)

    小马哥STM32F1主控720空心杯四轴飞行器资料(包含源代码和相关教程) 项目实例下载! 纯分享帖,需要者可点击附件免费获取完整资料~~~【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!
    发表于 05-23 21:07