stm32使用串口DMA实现数据的收发

news/2024/11/8 23:43:41 标签: stm32, 嵌入式硬件, 单片机

前言

DMA的作用就是帮助CPU来传输数据,从而使CPU去完成更重要的任务,不浪费CPU的时间。

一、配置stm32cubeMX






这两个全添加上。参数配置一般默认即可

代码部分

只需要把上期文章里的HAL_UART_Transmit_IT(&huart2,DATE,2);

全都改为HAL_UART_Transmit_DMA(&huart2,DATE,2);即可

参数都是一样 的。

看代码

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	  
	 ***** HAL_UART_Transmit_DMA(&huart2,DATE,2);*****
	  //Contral LED
	  GPIO_PinState state = GPIO_PIN_SET;
	  if(DATE[1] == '0')
	  {
		  state = GPIO_PIN_RESET;
	  }else if(DATE[1] == '1')
	  {
		  state = GPIO_PIN_SET;
	  }
	  
	  if(DATE[0] == 'B')
	  {
		  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,state);
	  }else if(DATE[0] == 'R')
	  {
		  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,state);
	  }else if(DATE[0] == 'G')
	  {
		  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,state);
	  }
	  
	 ***** HAL_UART_Receive_DMA(&huart2,DATE,2);*****
}

这是他的回调函数。(*****的两行是最重要的基础部分,其他的都是附加的功能)

要注意最后一行,是重新开启了数据的接收。

因为你在main函数里只有一行HAL_UART_Receive_DMA(&huart2,DATE,2);这个代码,所以只会执行一次,也就是接收一次数据(不能把这行写在while函数里)。所以需要在这个回调函数写一次,也就是说 每次串口往外发送一次数据,都重新开启了接收的函数,我们才可以继续往里面发送内容。

最后

要记得在main主函数中使用HAL_UART_Receive_DMA(&huart2,DATE,2);跟之前是一样的,没这句话就相当于没使用函数。

来自keysking


http://www.niftyadmin.cn/n/5744567.html

相关文章

【宝藏】浏览器端的模块化问题(1)

接下来我们一起进入webpack的课程学习中,本课程的特点在于: 合适的深度:webpack 使用层面相对简单,但其原理层面非常复杂。合适的广度:webpack 生态圈极其繁荣,有海量的第三方库可以融入到 webpack 中。 …

ubuntu离线部署ollama

一、ollama部署 1、ollama官网安装教程,可以参考这个进行部署,下载对应版本 以intel为例下载安装包 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz sudo tar -C /usr -xzf ollama-linux-amd64.tgz2、运行安装…

【React.js】AntDesignPro左侧菜单栏栏目名称不显示的解决方案

作者:CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境:WebStorm 目录 问题概述 原因 解决方案 解决方法 潜在问题修改 最终效果呈现 额外内容 管理员界面路由配置 WebStorm背景更换 法一: 法二: 问题概…

esp32学习:利用虫洞ESP32开发板,快速实现无线图传

我们的虫洞开发板,能够完美运行esp who AI代码,所以实现无线图传那是非常容易的,我们先看看examples目录: 里面有比较多的web例程,在这些例程下,稍作修改,就可以快速实现我的图传无线功能&#…

【动态规划-划分型 DP】力扣2369. 检查数组是否存在有效划分

给你一个下标从 0 开始的整数数组 nums ,你必须将数组划分为一个或多个 连续 子数组。 如果获得的这些子数组中每个都能满足下述条件 之一 ,则可以称其为数组的一种 有效 划分: 子数组 恰 由 2 个相等元素组成,例如,…

[产品管理-58]:安索夫矩阵矩阵帮助创业者确定研发出来的产品在市场中定位策略

目录 一、提出背景 二、核心思想与结构 三、应用背景与领域 四、实践案例 安索夫矩阵(Ansoff Matrix),也被称为产品/市场方格或成长矢量矩阵,其应用背景可以从以下几个方面进行详细阐述: 一、提出背景 安索夫矩阵…

大数据Informatica面试题及参考答案

目录 什么是 Informatica?它主要解决什么问题? 什么是 Informatica PowerCenter? Informatica PowerCenter 的主要组成部分有哪些? 解释 Informatica PowerCenter 的主要组件。 Informatica PowerCenter 与 DataStage 有何区别? 解释 Informatica 中的源 (Source) 和…

Python邮差:如何用代码精确投递商品快递费用的密信

目录 一、准备工作 二、编写API请求脚本 三、解析与处理快递费用数据 四、案例应用:模拟电商平台的快递费用计算 五、自动化邮件通知 六、总结 在电子商务的广阔天地里,精确计算并快速传递商品快递费用是一项至关重要的任务。作为Python邮差&#…