HAL_UARTEx_ReceiveToIdle_DMA和HAL_UART_Receive_DMA的区别

功能

  1. HAL_UART_Receive_DMA 仅仅是开启的串口的DMA接收,若是想使用空闲中断 + DMA接收则需要开启串口的空闲中断;

    HAL_UARTEx_ReceiveToIdle_DMA函数中则包含了开启串口空闲中断;

    image-20241030101624494
  2. HAL_UART_Receive_DMA 的接收类型是HAL_UART_RECEPTION_STANDARD,为标准接收;

    image-20241030101352545 image-20241030101459847

HAL_UARTEx_ReceiveToIdle_DMA的接收类型是HAL_UART_RECEPTION_TOIDLE,为接收到空闲中断或接收完成;

image-20241030105621598

image-20241030105708696

中断回调

  1. 因为其接收类型的不同HAL_UART_RECEPTION_STANDARDHAL_UART_RECEPTION_TOIDLE导致其中断回调函数的不同;

HAL_UART_Receive_DMA的中断回调函数HAL_UART_RxCpltCallback,是在DMA1_Stream3_IRQHandler中断函数中调用的,当达到接收数据长度时触发的,虽然空闲中断被触发了,但是在并未在USART1_IRQHandler执行清除标志位和触发函数的执行;

HAL_UARTEx_ReceiveToIdle_DMA的中断回调函数HAL_UARTEx_RxEventCallback,是在USART1_IRQHandler中断函数中调用的,当达到接收指定数据长度或者产生空闲中断时时触发的;

  1. 使用HAL_UARTEx_ReceiveToIdle_DMA函数实现空闲中断 + DMA接收不定长数据是比较方便的,只需要在HAL_UARTEx_RxEventCallback函数中完成对数据的处理和再次开启就可以了,相关的标志位会在USART1_IRQHandler中被清除;

    使用HAL_UART_Receive_DMA函数实现空闲中断 + DMA接收不定长数据是比较不方便的,需要在USART1_IRQHandler函数中完成检测标志位、清除标志位、停止DMA、获取数据长度、处理数据、开启新一轮的接收,需要自己补充函数完成一系列的操作。

结论

实现串口的空闲中断 + DMA接收不定长数据使用HAL_UARTEx_ReceiveToIdle_DMA函数是比较方便。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MyBlog(三) -- APP的应用

文章目录 前言一、APP是什么?二、创建APP三、使用APP1. 注册app2. 添加路由3. 运行过程4. 完善视图函数5. 结果展示 总结 前言 前面我们已经学习了如何创建一个新的项目,并且配置好了项目的启动文件,成功将项目启动! 那么接下来我们的主要任务就是需要完善这个项目中应该包含…

tdengine学习笔记-整体架构及docker安装

官方文档:用 Docker 快速体验 TDengine | TDengine 文档 | 涛思数据 整体架构 TDENGINE是分布式,高可靠,支持水平扩展的架构设计 TDengine分布式架构的逻辑结构图如下 一个完整的 TDengine 系统是运行在一到多个物理节点上的,包含…

【支持向量机(SVM)】:相关概念及API使用

文章目录 1 SVM相关概念1.1 SVM引入1.1.1 SVM思想1.1.2 SVM分类1.1.3 线性可分、线性和非线性的区分 1.2 SVM概念1.3 支持向量概念1.4 软间隔和硬间隔1.5 惩罚系数C1.6 核函数 2 SVM API使用2.1 LinearSVC API 说明2.2 鸢尾花数据集案例2.3 惩罚参数C的影响 1 SVM相关概念 1.1…

git 基础之 merge 和 rebase 的比较

在团队软件开发过程中,代码合并是一个基本且频繁执行的任务。 Git 提供了多种合并代码的策略,其中最常用的是 merge 和 rebase。 尽管二者的终极目标是相同的——整合代码变更——它们的方法和推荐的使用场景却有所区别。本文将详细介绍和比较这两种策…

sagemaker中使用pytorch框架的DLC训练和部署cifar图像分类任务

参考资料 https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-python-sdk/pytorch_cnn_cifar10/pytorch_local_mode_cifar10.ipynbhttps://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html 获取训练数据 # s3://zhaojiew-sa…

jmeter常用配置元件介绍总结之配置元件

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之线程组 4.jmeter常用配置元件介绍总结之函数助手 5.jmeter常用配置元件介绍总结之取样器 6.jmeter常用配置元件介绍总结之jsr223执行pytho…

vite+vue3+ts编译vue组件后,编译产物中d.ts文件为空

一、前言 使用vue3vitets实现一个UI组件库,为了生成类型文件便于其他项目引用该组件库。根据推荐使用了vite-plugin-dts插件进行ts文件的生成 二、版本 组件版本vue ^3.5.12 vite ^5.4.10 vite-plugin-dts ^4.3.0 typescript ~5.6.2 三、问题描述 使用vitevi…

红外相机和RGB相机外参标定 - 无需标定板方案

1. 动机 在之前的文章中红外相机和RGB相机标定:实现两种模态数据融合_红外相机标定-CSDN博客 ,介绍了如何利用标定板实现外参标定;但实测下来发现2个问题: (1)红外标定板尺寸问题,由于标定板小…

柔性仿人手指全覆盖磁皮肤,具备接触觉和运动觉的双模态感知能力

人体精细触觉和本体运动觉依赖于相同类型的感受器,这些感受器位于肌肉、肌腱、关节和皮肤中,负责感知轻触、挠痒、细微压力、形状变化、肌肉张力、肌腱拉伸和关节位置变化等信息。因此方斌教授团队着手于具有高精度、小尺寸、可定制等优势的磁触觉传感器…

【摘要】正点原子--Makefile--学习笔记

目录 一、Makefile 基础1、Makefile引入2、Makefile初次编写 二、Makefile语法1、Makefile规则格式2、Makefile第一次升级 一、Makefile 基础 1、Makefile引入 2、Makefile初次编写 二、Makefile语法 1、Makefile规则格式 2、Makefile第一次升级

【WPF】Prism学习(八)

Prism Dependency Injection 1.处理解析错误 1.1. 处理解析错误: 这个特性是在Prism 8中引入的,如果你的应用目标是早期版本,则不适用。 1.2. 异常发生的原因: 开发者可能会遇到多种原因导致的异常,常见的错误包括…

第8章硬件维护-8.2 可维护性和可靠性验收

8.2 可维护性和可靠性验收 可维护性和可靠性验收非常重要,硬件维护工程师在后端发现问题后,总结成可维护性和可靠性需求,在产品立项的时候与新特性一起进行需求分析,然后经过设计、开发和测试环节,在产品中落地。这些需…

Java 岗面试八股文及答案整理(2024最新版)

春招,秋招,社招,我们 Java 程序员的面试之路,是挺难的,过了 HR,还得被技术面,小刀在去各个厂面试的时候,经常是通宵睡不着觉,头发都脱了一大把,还好最终侥幸能…

sglang 部署Qwen2VL7B,大模型部署,速度测试,深度学习

sglang 项目github仓库: https://github.com/sgl-project/sglang 项目说明书: https://sgl-project.github.io/start/install.html 资讯: https://github.com/sgl-project/sgl-learning-materials?tabreadme-ov-file#the-first-sglang…

Debezium日常分享系列之:Debezium3版本Debezium connector for JDBC

Debezium日常分享系列之:Debezium3版本Debezium connector for JDBC 概述JDBC连接器的工作原理消费复杂的Debezium变更事件至少一次的传递多个任务数据和列类型映射主键处理删除模式幂等写入模式演化引用和大小写敏感性连接空闲超时数据类型映射部署Debezium JDBC连…

Java项目实战II基于微信小程序的科创微应用平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着科技的…

C++ Primer习题集----题目+答案版

具体源码请见:Cprimer习题上半部分资源-CSDN文库 目录 第一章 开始 练习1.1 编写程序,在标准输出上打印Hello.world 练习1.2 我们的程序使用加法运算符来将两个数相加。编写程序使用乘法运算符*,来打印两个数的积。 练习1.4 编译一个包…

Zookeeper的简单使用Centos环境下

目录 前言 一、ZOokeeper是什么? 二、安装Zookeeper 1.进入官网下载 2.解压到服务器 3.配置文件 三.使用Zookeeper 3.1启动相关指令 3.2其他指令 3.3ACL权限 总结 前言 记录下安装zookeeper的一次经历 一、ZOokeeper是什么? ZooKeeper是一…

【Linux】————多线程(概念及控制)

作者主页: 作者主页 本篇博客专栏:Linux 创作时间 :2024年11月19日 再谈地址空间: OS对内存进行管理不是根据字节为单位,以字节为单位效率过低,是以内存块为单位的,一个内存块的大小一般为4…

蓝桥杯每日真题 - 第17天

题目:(最大数字) 题目描述(13届 C&C B组D题) 题目分析: 操作规则: 1号操作:将数字加1(如果该数字为9,变为0)。 2号操作:将数字…