DMA空闲中断实现接收不定长数据(基于HAL库)

DMA空闲中断实现接收不定长数据(基于HAL库-F103ZET6):

第一步正常配置Cubemx:

1 时钟:
image.png
image.png
SYS:
image.png

2 LED: 我这里判断它进入的是哪个中断

image.png

image.png

第二步串口及DMA基础配置:

1 串口设置:image.png

开启中断: 开启串口中断
image.png

2 DMA配置:打开串口接收DMA,模式选择Normal。
image.png

打开Keil工程:
在添加接受缓存数组

#include <string.h>  //这个调用C的库函数uint8_t ReceiveData[4]; //接收缓存数组

image.png

开启DMA串口空闲中断:

HAL_UARTEx_ReceiveToIdle_DMA(&huart1,ReceiveData,sizeof(ReceiveData));
//__HAL_DMA_DISABLE_IT(&hdma_usart1_rx,DMA_IT_HT); // 这个是清除中断挂起标志后面会举例

image.png

调用回调函数:

这里判断是串口进入那个中断

void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart){if(huart == &huart1){HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);}
}
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){if(huart == &huart1){HAL_UART_Transmit_DMA(&huart1,ReceiveData,Size);HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);HAL_UARTEx_ReceiveToIdle_DMA(&huart1,ReceiveData,sizeof(ReceiveData));//__HAL_DMA_DISABLE_IT(&hdma_usart1_rx,DMA_IT_HT);}}

image.png

打开串口调试工具:
可以看到能正常收到信息
image.png

:::info
可以看到 D0-> PB5 灭了 说明进入 HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
:::

微信图片_20240718164517.jpg
但是DMA有个缺点就是过半挂起就是在发送超过缓存数组一半的时候会自动发送(可以定义一个大点的缓存数组) 我们要求的确实完整的数据 所以需要清楚DMA的过半挂起 可以看到我们发送1234 但是才接受到12 这个时候我们就需要清除挂起
image.png

清除:可以看到失能 DMA_IT_HT就行了
image.png

	__HAL_DMA_DISABLE_IT(&hdma_usart1_rx,DMA_IT_HT);  

image.png
image.png

现在就能正常收发信息了
image.png

完整工程:DM A
https://www.alipan.com/s/b8wSzvPjueR
提取码: pdk0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3249737.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

新文件覆盖旧文件还能复原吗?八大excel文档修复软件免费

新文件覆盖旧文件还能复原吗&#xff1f;文件操作失误&#xff0c;尤其是新文件意外覆盖旧文件的情况时有发生&#xff0c;面对文件被覆盖的情况&#xff0c;我们不仅需要冷静应对&#xff0c;更需要掌握一系列有效的恢复策略。本文将深入探讨八种免费方法&#xff0c;旨在帮助…

将达梦数据库的JDBC驱动包 DmJdbcDriver18.jar 安装到本地 Maven 仓库

项目打包报错&#xff1a;Failure to find com.dameng:DmJdbcDriver18:jar:8.1.3.12 in http://maven.aliyun.com/nexus/content/groups/public 解决方式如下&#xff1a; 从 https://eco.dameng.com/download/ 中下载 达梦JDBC 驱动包&#xff0c;如下 JDK 1.8 对应的 JDBC…

免费恢复软件有哪些?电脑免费使用的 5 大数据恢复软件

您是否在发现需要的文件时不小心删除了回收站中的文件&#xff1f;您一定对误操作感到后悔。文件永远消失了吗&#xff1f;还有机会找回它们吗&#xff1f;当然有&#xff01;您可以查看这篇文章&#xff0c;挑选 5 款功能强大的免费数据恢复软件&#xff0c;用于 Windows 和 M…

【iOS】——编译链接和动态链接器

前言 计算机语言分为机器语言&#xff1a;汇编语言&#xff0c;高级语言。 可以将高级语言分为两种&#xff1a;1&#xff0c;编译语言和解释型语言&#xff08;直译式语言&#xff09;。 编译型语言&#xff08;一次性翻译&#xff09; 编译型语言的程序只要经过编译器编译之…

Spring如何管理Mapper

目录 一、背景二、猜测三、源码查看步骤1、创建MapperScannerConfigurer.java2、MapperScan注解3、MapperScannerRegistrar执行registerBeanDefinitions方法4、MapperScannerConfigurer执行postProcessBeanDefinitionRegistry方法5、执行doscan6、设置beanClass7、使用jdk生成代…

sql常见50道查询练习题

sql常见50道查询练习题 1. 表创建1.1 表创建1.2 数据插入 2. 简单查询例题(3题&#xff09;2.1 查询"李"姓老师的数量2.2 查询男生、女生人数2.3 查询名字中含有"风"字的学生信息 3. 日期相关例题(6题&#xff09;3.1 查询各学生的年龄3.2 查询本周过生日的…

解决:Linux上SVN 1.12版本以上无法直接存储明文密码

问题&#xff1a;今天在Linux机器上安装了SVN&#xff0c;作为客户端使用&#xff0c;首次执行SVN相关操作&#xff0c;输入账号密码信息后&#xff0c;后面再执行SVN相关操作&#xff08;比如"svn update"&#xff09;还是每次都需要输入密码。 回想以前在首次输入…

Typora 1.5.8 版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora是一款基于Markdown语法的轻量级文本编辑器&#xff0c;它的主要目标是为用户提供一个简洁、高效的写作环境。以下是Typora的一些主要特点和功能&#xff1a; 实时预览&#xff1a;Typora支持实时预览功能&#xff0…

云监控(华为) | 实训学习day3(10)

实现数据的增删改查 SpringBoot框架模式 向送外卖一样理解 写程序 1、准备食材(java bean) 2、菜谱(pojo接口->预制->sql 语句) 3、service处理 4、controller 派送 5、用户请求->页面 一、Spring Boot实现增加 第一步&#xff1a;食材(表),用户增加,这里还是用户…

使用Python和Pandas进行数据分析:入门与实践

目录 引言 准备工作 安装Python与Pandas 导入Pandas库 Pandas基础 数据结构 创建Series和DataFrame 读取数据 数据探索 查看数据 数据清洗 数据可视化 实战案例&#xff1a;分析销售数据 引言 在当今数据驱动的时代&#xff0c;数据分析已成为各行各业不可或缺的…

如何高效定制视频扩散模型?卡内基梅隆提出VADER:通过奖励梯度进行视频扩散对齐

论文链接&#xff1a;https://arxiv.org/pdf/2407.08737 git链接&#xff1a;https://vader-vid.github.io/ 亮点直击&#xff1a; 引入奖励模型梯度对齐方法&#xff1a;VADER通过利用奖励模型的梯度&#xff0c;对多种视频扩散模型进行调整和对齐&#xff0c;包括文本到视频和…

机器学习的持续交付-CD4ML 端到端自动化构建部署机器学习应用

机器学习的持续交付-CD4ML 端到端自动化构建部署机器学习应用 原文&#xff1a;Continuous Delivery for Machine Learning - CD4ML 关键字&#xff1a;持续部署、持续交付、机器学习、CD4ML 作者&#xff1a;Danilo Sato, Arif Wider, Christoph Windheuser 译者&#xff1a;周…

synergy配置

今天介绍一个电脑同步软件synergy。 我们开发时一般会用两套设备&#xff0c;如果使用两套键盘操作起来会很麻烦&#xff0c;这个软件就是解决这个问题&#xff0c;可以使用一套键盘同时操作两台电脑&#xff0c;另一台作为客户端被控制。 安装 在两台电脑上各自下载安装syne…

55 TCP协议

目录 协议段格式确认应答&#xff08;ACK&#xff09;机制序号标志位超时重传连接管理机制延迟应答捎带应答流量控制滑动窗口拥塞控制面向字节流粘包问题异常情况小结文件和socket的关系基于tcp应用层协议udp和tcp对比udp实现可靠传输 全称为“传输控制协议&#xff08;Transm…

【BUG】已解决:note: This is an issue with the package mentioned above,not pip.

已解决&#xff1a;note: This is an issue with the package mentioned above&#xff0c;not pip. 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷…

ELK 8.14版本搭建

1.架构图 2.基础环境准备&#xff1a; 2.1 关闭防火墙和selinux [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config [rootlocalhost ~]# cat /etc/selinux/config # This file controls the state of SEL…

手机恢复回收站清空的照片,3个方法与注意事项【小米/华为/vivo】

你们是否曾遭遇过这样的困境&#xff1a;清空回收站后&#xff0c;突然发现其中有几张非常重要的照片&#xff1f;那种懊悔与焦虑&#xff0c;简直可以写成一部“手机用户的心酸史”。这篇文章来拯救你啦&#xff01;恢复回收站清空的照片的方法可不少&#xff0c;究竟是哪3个方…

uni-app开发日志:unicloud使用时遇到的问题解决汇总(不断补充)

插件安装后提示与原数据库表冲突&#xff08;2024.7.18&#xff09; 安装uni-admin后再安装uni-cms&#xff0c;在uni-admin中添加好菜单&#xff0c;结果提示该错误 回到hbuilder中uniCloud/database中找到冲突的部分 比较一下&#xff0c;选中老的删除 opendb-news-articl…

【转盘案例-弹框-修改Bug-完成 Objective-C语言】

一、我们来看示例程序啊 1.旋转完了以后,它会弹一个框,这个框,是啥, Alert 啊,AlertView 也行, AlertView,跟大家说过,是吧,演示过的啊,然后,我们就用iOS9来做了啊,完成了以后,我们要去弹一个框, // 弹框 UIAlertController *alertController = [UIAlertContr…

maven项目打成可运行的jar及pom中的依赖一同打包

maven项目打jar及pom中的依赖一同打包 最近开发中有个需求&#xff0c;不部署新的服务&#xff0c;只jar包执行 那maven项目中&#xff0c;代码如何以jar的方式运行、如何把代码打成jar、pom中的依赖如何与代码一同打到jar包中&#xff1f; 1、代码如何以jar的方式运行&…