STM32串口通信DMA方式
文章目录
- 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方式相关推荐
- 关于RS485通讯中使用STM32串口以DMA方式发送数据丢失字节的问题
1.开发平台 计算机操作系统:WIN7 64位: 开发环境:Keil MDK 5.14: MCU:STM32F407ZET6: STM32F4xx固件库:STM32F4xx_DSP_StdPeriph ...
- STM32——串口通信
STM32--串口通信 宗旨:技术的学习是有限的,分享的精神是无限的. 一.异步串口通信协议 STM32 的串口非常强大,它不仅支持最基本的通用串口同步.异步通信,还具有 LIN 总线功能(局域互联网 ...
- STM32串口通信学习总结
STM32串口通信学习总结 1.概述 1.1学习目的 ...
- STM32串口通信详解(嵌入式学习)
STM32串口通信 1.通信基础知识 1.1 时钟信号区分 同步通信 异步通信 波特率 总线协议(电气协议) 1.2 通信方式划分 串行通信 并行通信 1.3 通信方向划分 单工通信 半双工通信 全双 ...
- 【STM32串口通信】
STM32串口通信 学习计划 一.串口通信知识点 二.硬件部分 1.所需硬件 2.部分硬件连接 三.阻塞式 0.串口阻塞式发送和接收概念 1.STM32CUBEMX配置 2.编写阻塞式串口发送与接收代 ...
- Ardunio下的STM32串口通信
文章目录 任务要求 Ardunio下的STM32串口通信 软件准备 编译烧录 标准库函数与HAL库函数的stm32编程方式差异 国人版的MCU集成开发平台 stduino IDE 总结 任务要求 安装 ...
- 【串口通信】K210与STM32串口通信、K210与OpenMV串口通信
[串口通信]K210与STM32串口通信.K210与OpenMV串口通信 串口通信 前言 为何需要串口通信 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口发送测试 ...
- STM32串口通信详解以及通信异常或者卡死常见问题分析
STM32串口通信详解以及通信异常或者卡死常见问题分析 目录 STM32串口通信详解以及通信异常或者卡死常见问题分析 一.常见的异常问题 二.STM32的串口简介 1.串口的通讯方式 ①按数据传输方向 ...
- 嵌入式作业(七):基于Ardunio的STM32串口通信
嵌入式作业(七) 0 作业要求 1 Ardunio 完成STM32的串口通信 (1)安装Ardunio IDE (2)stm32串口通信 2 基于串口通信的标准库与hal库的区别 (1)hal库 (2 ...
- 【嵌入式】STM32串口通信
[嵌入式]STM32串口通信 一.串口通信协议 1.串口通信简介 2.串口通信原理 二.RS232通信协议 1.RS232协议简介 2.机械规约 3.电气规约 三.STM32的USART串口通信(查询 ...
最新文章
- vue.config.js配置代理不生效_npm install的代理问题
- 利用python实现简易版的贪吃蛇游戏(面向python小白)
- 求助大佬6——1种贪心
- android如何监听按钮,Android – 两个onClick监听器和一个按钮
- Spring Cloud Sidecar –节点初始化
- BEC translation exercise 4
- python 组合数据_python-组合数据类
- 为什么 ofo 彻底凉了?| 畅言
- 这个严重 0day 可导致79款 Netgear 路由器遭远程接管,无补丁
- React+Webpack+Webstorm开发环境搭建
- 网上支付跨行清算系统与大小额支付系统有什么区别?
- “留得五湖明月在,不愁无处下金钩“太经典,分享一下
- NIK插件-托马斯教程1-color efex pro 4
- 11408考研复习规划
- 【UU主机加速】PC无线热点直接加速switch(无需路由器)
- 局域网传输文件的几种方法盘点
- UiPath Excel 数据筛选修改
- linux mysql统计次数_按条件计数 - MySQL统计函数记录_数据库技术_Linux公社-Linux系统门户网站...
- 四川省内江市启动公共视频监控三期建设
- 数值计算(三)-插值法(2)牛顿插值法
热门文章
- itools 苹果录屏大师 java_itools录屏大师
- DM7 达梦数据库 物理备份 相关概念说明
- dm7数据库单机安装步骤
- 雷电模拟器安装xposed框架
- 数字听力Numbers Listening
- Leetcode题medium48/54/55/56/59/62/63/64,Python多种解法(四)
- Visual Studio中#includestdafx.h的作用
- 最好的Javaweb教程JavaWeb架构演变-动力节点
- vscode下载安装及中文配置
- C++求100以内中的所有素数