STM32 进阶教程 15 - 串口DMA收发

2023-11-02

前言

串口操作相信大家一定很熟悉,如果你已经会串口的收发数据,并可以灵活使用轮询及中断方式对串口进行数据收发,那么恭喜你,学完本节内容后,也将可以学会串口的更高级操作方式,DMA方式,DMA操作串口可以大大减轻MCU的负担,同时也可以加快数据的发送,特别是在大量数据场景下更为明显。

示例详解

基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。

 

 

本示例所用的最小系统板原理图:

 

    1. 关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:
      1. 系统时钟树

      1. 定时器配置

      1. 串口配置

      1. 引脚配置

      1. 中断配置(开启USART1中断)

 

    1. 工程代码

 

      1. 在main.c中加入如下代码

    1. 编译工程无错误后,下载程序,程序正常运行,LED灯正常闪烁(500ms交替亮灭),接上串口,打开上位机串口工具,串口DMA数据发送成功:

接收也是成功的:

到这里,大家有没有觉得串口用DMA操作是不是也很简单呢,特别是结合最新的HAL库,使用起来更加简单!

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,会有不定期技术干货推出!!

文中源码资料下载,在公众号里给十三发消息:

下载|STM32进阶教程 15

 

关注十三公众号

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32 进阶教程 15 - 串口DMA收发 的相关文章

  • STM32 DMA +串口 收发数据(不用频繁进入中断) STM32G473 hal库

    1 1 实现方法 利用DMA接收串口数据 xff0c 在一定程度上会节省CPU 的消耗 大多数串口接收都是接收一个字节就中断一次 xff0c 如果串口上需要实时接收大量的数据 xff0c 这就会导致频繁进入中断 xff0c 这样一来 xff
  • FIFO与DMA

    FIFO存储器是一个先入先出的双口缓冲器 xff0c 即第一个进入其内的数据第一个被移出 xff0c 其中一个存储器的输入口 xff0c 另一个口是存储器的输出口 主要有三个方面的作用 xff1a 1 xff09 对连续的数据流进行缓存 x
  • (转)stm32F4-----DMA的FIFO作用和用法

    在STM32F4系列中DMA增加了个FIFO 这个FIFO的作用是什么 xff1f 当我使能这个FIFO时 xff08 DMA InitStructure DMA FIFOMode 61 DMA FIFOMode Enable xff09
  • UART+DMA数据传输

    DMA的概念 DMA xff08 Direct Memory Access xff09 即直接内存访问 xff0c DMA传输方式无需CPU直接控制传输 xff0c 通过硬件为RAM I O设备开辟一条直接传输数据的通路 xff0c 能使C
  • stm32串口DMA方式向上位机连续发送数据

    目录 一 认识DMA1 DMA框图2 什么是DMA xff1f 3 DMA传输方式4 DMA传输参数5 DMA数据传输的四个要素6 DMA的应用场景 二 串口DMA方式向上位机发送数据1 实验要求2 通过STMCube配置项目 1 设置RC
  • STM32 HAL 串口收发(无DMA,中断接收)

    STM32CUBE配置 一 使用printf发送数据 xff0c 在usart c中添加代码串口重定向 USER CODE BEGIN 0 include lt stdio h gt ifdef GNUC define PUTCHAR PR
  • ZYNQ系列(十二)linux的DMA使用

    ZYNQ系列 xff08 十二 xff09 linux的DMA使用 文章目录 ZYNQ系列 xff08 十二 xff09 linux的DMA使用前言开发环境准备工作petalinux工程建立建立工程配置内核1 配置DMA2 配置CMA 修改
  • AXI DMA总结、内核axidmatest.c测试程序分析、SG mode

    AXI DMA 概述 xff1a XILINX提供的AXI DMA支持Scatter Gather mode和Direct Register mode 数据位宽支持32 64 128 256 512 1024bits xff0c strea
  • 轮询、中断和DMA三种方式的原理和联系

    CPU控制外部设备的方式 xff1a 中断 轮询 DMA 轮询中断DMA 由于外部设备的速度差异 xff0c CPU可以使用不同的方式控制外部设备的访问 常见的方式轮询 中断和DMA 轮询 轮询最简单 xff0c CPU通过不断地查询某个外
  • STM32F1应用DMA——串口收发不定长数据

    STM32F1应用DMA 串口收发不定长数据 使用STM32自带DMA传输数据 可以减轻CPU负担 只需设置一些参数即可发送想要发送的数据 以下是STM32F1系列芯片测试过的部分代码 可实现DMA串口收发数据 下图来自STM32官网的手册
  • 树莓派4B下的usart串口测试

    树莓派4B是树莓派最新发布的版本 串口测试是新手入门的一个必经之路 鉴于网上4B资料相对较少 很多资料都是从3B或3B 上移植过来的 但平台不同 需要的操作也可能不同 这里对树莓派4B做一些总结 关于树莓派串口的问题 可参考链接 https
  • python 使用线程接收串口数据,并同时可进行串口数据发送。提供python 串口通讯助手的源码下载

    有关python 串口通讯助手的源码下载 请打开这篇文章 https blog csdn net xiaoeleis article details 105820455 python 使用线程接收串口数据 并同时可进行串口数据发送 问题 1
  • CH340 MAC驱动使用教程

    CH340 支持各类系统平台下使用 驱动的使用以及下载介绍可以参见我的其他博客 CH340 驱动 含各平台 这一篇文章主要介绍CH340 在 MAC 以及各类 Arduino 平台的安装使用流程 首先到沁恒官网下载最新的CH340驱动 这里
  • C++ C#自动获得特定串口 获得串口列表

    目的 自动获得特定串口 0 C 自动获得特定串口 读设备管理器 计算机管理 串口列表 PrintDeviceInfo cpp 定义控制台应用程序的入口点 include
  • Python Serial串口的简单数据收发

    导入模块 注意这里模块名是pyserial pip install pyserial 1 打开串口 import serial com serial Serial COM3 9600 print com 2 发送数据 import seri
  • STM32通过ESP8266利用机智云平台实现手机远程操作

    STM32通过ESP8266利用机智云平台实现手机远程操作 将STM32作为主控芯片 ESP8266作为外设 利用串口传递信息 通过机智云平台实现STM32与手机之间的数据传输 之所以选择机智云平台 是因为机智云平台相关配套的软件工具非常齐
  • CUBEMX+HAL库实现STM32串口(不定长度)收发

    CUBEMX HAL库实现STM32串口接收 不定长度 并发送 首先新建一个CUBEMX工程 选择你自己开发板的芯片型号 设置时钟和串口 设置时钟为72MHZ 设置串口中断 点击小齿轮生成KEIL5的工程 设置工程名称及存放位置 点击Ope
  • 串口通信知识点总结

    串口是串行接口 serial port 的简称 也称为串行通信接口或COM接口 串口通信是指采用串行通信协议 serial communication 在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式 串口按电气标准及协议来划分
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • 环形缓冲区和 DMA

    我试图了解从数据包到达网卡到目标应用程序收到数据包之间发生的所有事情 假设 缓冲区足够大 可以容纳整个数据包 我知道情况并非总是如此 但我不想介绍太多技术细节 一种选择是 1 Packet reaches the NIC 2 Interru

随机推荐

  • 【AR.js】在AR.js中使用spine动画

    说在前面 测试浏览器 Microsoft Edge PC版本 97 0 1072 55 github库 AR js AR系列文章 这里 go版本 go version go1 17 3 windows amd64 three js版本 r7
  • gns3 protocol is down的一个问题终于找到解决对策了

    我前天在学校 遇到一个非常蹊跷又头痛的问题 我在gns3中只拉了一个c3600路由和一台pc连起来 新建vlan 2并设置ip作为网关 把pc所在接口加入到vlan 2后 设置好网关但死活ping不到这个网关 这么简单的俩玩意儿怎么会出这个
  • (基于安卓app开发的毕业设计)家庭图书管理系统(附论文+源码)

    大家好 我是职场程序猿 感谢您阅读本文 欢迎一键三连哦 当前专栏 安卓app毕业设计 精彩专栏推荐 微信小程序毕业设计 Java毕业设计 目录 一 项目简介 二 系统功能结构图 三 系统核心功能模块部分截图 3 1信息展示界面 2 2分类展
  • 数学建模Word排版——样式

    样式 与大多数论文写作类似 使用样式能够极大提高排版速度 提前准备好自己的样式文件 可以快速进行写作 一般是边写边排版 初期只应用所需样式即可 最后再对图表的位置 次序等进行进一步调整 创建所需样式 标题名称 为了便于区分 可以考虑加上中文
  • proteus 遇到Program file is not specified和Real Time Simulation failed to start.

    proteus 遇到Program file is not specified和Real Time Simulation failed to start 在使用protues做仿真的时候 点击开始运行 发现 点进去看看错误原因 这其实是粗心
  • Django常用命令

    python manage py migrate 新建项目 django admin py startproject 项目名 以下命令要先进入项目目录下才能执行 cd 项目名 新建app 一个项目可以有多个app 通用的app也可以在多个项
  • 如何做一个超链接,打开一个新窗口而保留原来的窗口?

    让整个网页页面内的链接都在新窗口打开 在head中加入 让一个DIV里所有链接在新窗口打开 在body中加入 a href 链接路径 target blank a 这样就可以啦 这就是表示在新的窗口打开链接 blank 在新窗口中打开链接
  • 组合特征(五)countvector(w)+doc(w)+hash(w)

    将countvector word hash word 和doc2vec word 拼接成新特征 import pickle from scipy import sparse from scipy sparse import hstack
  • 对数及对比度拉伸变换

    对数及对比度拉伸变换 对数和对比度拉伸变换是 动态范围操作的基本工具 表达式 g c log 1 f 其中c是一个常数 f是浮点数 对数变换 应用 压缩动态范围 实现了图像灰度扩展和压缩功能 扩展低灰度值而压缩高灰度值 让图像的灰度分布更加
  • 在Linux服务器上下载并安装Nginx

    在Linux服务器上下载并安装Nginx 下载安装包 进入官网 http nginx org en download html 下载稳定版 进入usr下的local文件夹 cd usr local 在user下的local中创建nginx文
  • 【毕业设计】基于单片机的心率血氧健康监测手表 - 物联网 嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 4 1 硬件准备 4 2 传感器和算法 5 部分核心代码 5 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到
  • How to debug release mode program in visual studio

    一般情况下 因为release模式的需求 在release模式下的程序是没有debug符号信息的 但是我们可以通过修改Visual studio中的选项来enable release模式的程序的debug 右键项目 选择属性 关闭如下优化选
  • kolla 部署 openstack v1.0

    准备 hosts配置 cat lt lt EOF gt gt etc hosts 192 168 179 90 kolla ansible controller 192 168 179 91 kolla ansible compute EO
  • 2023国赛数学建模B题思路分析 - 多波束测线问题

    1 赛题 B 题 多波束测线问题 单波束测深是利用声波在水中的传播特性来测量水体深度的技术 声波在均匀介质中作匀 速直线传播 在不同界面上产生反射 利用这一原理 从测量船换能器垂直向海底发射声波信 号 并记录从声波发射到信号接收的传播时间
  • ItelliJIDEA安装与破解

    IntelliJ IDEA下载地址 官网下载 http www jetbrains com idea IntelliJ IDEA安装教程就不赘述了 百度一下就有 下面主要讲IntelliJ IDEA破解步骤 1 下载补丁 下载地址 http
  • 傅里叶变换的实质--正交之美

    引 最近在搞一个音频解码器 将随意录制好的声音按照不同的频率分离出不同的音频流 然后推到不同的音箱中 如果再考虑一下音场的谐性 那就是一个N 1声道的解码系统了 我只是想在女儿 或者儿子 出生之前为她做点事情 以便能最终做出个东西送给她 或
  • Python2.7.X的安装

    感谢关注的同志 今天写一下Python2 7 X的安装 与大家分享 1 官网下载 在python官网下载https www python org downloads 我这里下载的是Python 2 7 15 https download c
  • 汇尔M1折腾记

    汇尔M1原价挺贵的 现在淘宝11块钱 所以买了几个 带近4000毫安电池 可当充电宝 usb口支持3G上网卡分享 一个可移动的路由器 好像厂家倒闭了 其他功能基本与普通路由器一致 使用了openwrt系统 我也不知道这个是啥 好像是个路由器
  • make 时遇到 /usr/bin/ld: cannot find -lstdc++

    在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息 usr bin ld cannot find lxxx 这些问题都是因为找不到相应的lib文件 其中xxx即表示函式库文件名称 如 libc so li
  • STM32 进阶教程 15 - 串口DMA收发

    前言 串口操作相信大家一定很熟悉 如果你已经会串口的收发数据 并可以灵活使用轮询及中断方式对串口进行数据收发 那么恭喜你 学完本节内容后 也将可以学会串口的更高级操作方式 DMA方式 DMA操作串口可以大大减轻MCU的负担 同时也可以加快数