文章目录

  • DMA概述
  • 配置DMA
  • 程序修改

DMA概述

CPU将需要发送的数据从内存中取出写入串口的发送寄存器,串口再将自己寄存器里的数据发送出去,数据的传输工作有CPU完成,串口的接收过程也类似,全程需要CPU搬运数据,如果传输的数据过大,势必会影响CPU的工作效率。

而DMA的任务就是减轻CPU的负担,承担原本由CPU完成的数据搬运工作。DMA的工作过程,一般是CPU开启DMA传输,DMA按配置好的方式开始传输数据并计数,达到设置的数量DMA产生中断通知CPU传输完成,开启DMA传输后,由DMA将内存中的数据传输至串口寄存器,或者将串口寄存器数据写入内存,CPU只需要控制传输的开始和处理传输结束后的事情。DMA的传输路径除了内存到外设和外设到内存,还有内存到内存, 这在处理图像显示的时候尤其有用,使用DMA搬移图像的大量数据可以大大减轻CPU压力。

定时器,包括串口在内的各种连接功能的外设,ADC和DAC等都可以使用DMA,与DMA配合实现很多适用功能。

配置DMA

在配置DMA时,我们会接触到通道这个概念,通道其实就是对DMA内部资源的分组,使DMA可以同时完成多项传输任务,通道的分配用STM32CubeMx即可。

程序修改

将串口中断函数后缀修改为DMA的方式通信

/* USER CODE BEGIN 2 */HAL_UART_Receive_DMA(&huart1, RxBuff,1);
/* USER CODE END 2 */

回调函数

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance==USART1){HAL_UART_Transmit_DMA(&huart1,RxBuff,5);}
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance==USART1){HAL_UART_Receive_DMA(&huart1,RxBuff,5);}
}

STM32串口通信DMA方式相关推荐

  1. 关于RS485通讯中使用STM32串口以DMA方式发送数据丢失字节的问题

    1.开发平台 计算机操作系统:WIN7 64位: 开发环境:Keil MDK 5.14: MCU:STM32F407ZET6: STM32F4xx固件库:STM32F4xx_DSP_StdPeriph ...

  2. STM32——串口通信

    STM32--串口通信 宗旨:技术的学习是有限的,分享的精神是无限的. 一.异步串口通信协议 STM32 的串口非常强大,它不仅支持最基本的通用串口同步.异步通信,还具有 LIN 总线功能(局域互联网 ...

  3. STM32串口通信学习总结

                                                                             STM32串口通信学习总结 1.概述 1.1学习目的 ...

  4. STM32串口通信详解(嵌入式学习)

    STM32串口通信 1.通信基础知识 1.1 时钟信号区分 同步通信 异步通信 波特率 总线协议(电气协议) 1.2 通信方式划分 串行通信 并行通信 1.3 通信方向划分 单工通信 半双工通信 全双 ...

  5. 【STM32串口通信】

    STM32串口通信 学习计划 一.串口通信知识点 二.硬件部分 1.所需硬件 2.部分硬件连接 三.阻塞式 0.串口阻塞式发送和接收概念 1.STM32CUBEMX配置 2.编写阻塞式串口发送与接收代 ...

  6. Ardunio下的STM32串口通信

    文章目录 任务要求 Ardunio下的STM32串口通信 软件准备 编译烧录 标准库函数与HAL库函数的stm32编程方式差异 国人版的MCU集成开发平台 stduino IDE 总结 任务要求 安装 ...

  7. 【串口通信】K210与STM32串口通信、K210与OpenMV串口通信

    [串口通信]K210与STM32串口通信.K210与OpenMV串口通信 串口通信 前言 为何需要串口通信 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口发送测试 ...

  8. STM32串口通信详解以及通信异常或者卡死常见问题分析

    STM32串口通信详解以及通信异常或者卡死常见问题分析 目录 STM32串口通信详解以及通信异常或者卡死常见问题分析 一.常见的异常问题 二.STM32的串口简介 1.串口的通讯方式 ①按数据传输方向 ...

  9. 嵌入式作业(七):基于Ardunio的STM32串口通信

    嵌入式作业(七) 0 作业要求 1 Ardunio 完成STM32的串口通信 (1)安装Ardunio IDE (2)stm32串口通信 2 基于串口通信的标准库与hal库的区别 (1)hal库 (2 ...

  10. 【嵌入式】STM32串口通信

    [嵌入式]STM32串口通信 一.串口通信协议 1.串口通信简介 2.串口通信原理 二.RS232通信协议 1.RS232协议简介 2.机械规约 3.电气规约 三.STM32的USART串口通信(查询 ...

最新文章

  1. vue.config.js配置代理不生效_npm install的代理问题
  2. 利用python实现简易版的贪吃蛇游戏(面向python小白)
  3. 求助大佬6——1种贪心
  4. android如何监听按钮,Android – 两个onClick监听器和一个按钮
  5. Spring Cloud Sidecar –节点初始化
  6. BEC translation exercise 4
  7. python 组合数据_python-组合数据类
  8. 为什么 ofo 彻底凉了?| 畅言
  9. 这个严重 0day 可导致79款 Netgear 路由器遭远程接管,无补丁
  10. React+Webpack+Webstorm开发环境搭建
  11. 网上支付跨行清算系统与大小额支付系统有什么区别?
  12. “留得五湖明月在,不愁无处下金钩“太经典,分享一下
  13. NIK插件-托马斯教程1-color efex pro 4
  14. 11408考研复习规划
  15. 【UU主机加速】PC无线热点直接加速switch(无需路由器)
  16. 局域网传输文件的几种方法盘点
  17. UiPath Excel 数据筛选修改
  18. linux mysql统计次数_按条件计数 - MySQL统计函数记录_数据库技术_Linux公社-Linux系统门户网站...
  19. 四川省内江市启动公共视频监控三期建设
  20. 数值计算(三)-插值法(2)牛顿插值法

热门文章

  1. itools 苹果录屏大师 java_itools录屏大师
  2. DM7 达梦数据库 物理备份 相关概念说明
  3. dm7数据库单机安装步骤
  4. 雷电模拟器安装xposed框架
  5. 数字听力Numbers Listening
  6. Leetcode题medium48/54/55/56/59/62/63/64,Python多种解法(四)
  7. Visual Studio中#includestdafx.h的作用
  8. 最好的Javaweb教程JavaWeb架构演变-动力节点
  9. vscode下载安装及中文配置
  10. C++求100以内中的所有素数