当前位置: 首页 > news >正文

STM32外设配置以及一些小bug总结

USART RX的DMA配置

这里以UART串口1为例,首先点ADD添加RX和TX配置DMA,然后模式一般会选择是normal,这个模式是当DMA的计数器减到0的时候就不做任何动作了,还有一种循环模式,是计数器减到0之后,计数器自动重装设定的初值,一般我们不希望是这样的。
在这里插入图片描述

然后配置UART的中断分组,并使能,由于这里我使用了RTOS,RTOS要求所有的中断的最小抢占优先级是5,并且不能设置子中断优先级。

在这里插入图片描述

注意要在UART的初始化函数的时候,规定以下DMA传输的地址,以及DMA的计数器的数值,并且开启UART的IDLE空闲中断。,这里的rx_buffer是自己在RAM中开辟的区域,这个BUFFER_SIZE就是DMA的计数器的数值。

在这里插入图片描述

然后要修改以下UART的中断函数,第一行的HAL库配置,主要是配置了一下UART函数的一些报错标志位触发的回调函数什么的,下面那个DMA RECEIV是用户自己实现的,主要是处理DMA的空闲中断,主要是接收数据以及清楚对应的标志位。

在这里插入图片描述

首先判断一下标志位,然后清除,然后停止DMA传输,然后取出本次接收的数据长度,然后清零接收数组,然后重新设置DMA的计数器值并且开启DMA输出。
在这里插入图片描述

关于没有定义symbol的报错

在这里插入图片描述

这个是由于我在.h文件中声明了这个变量,但并没有在.c文件中进行定义,我在.c文件中进行定义即可。

在这里插入图片描述

HAL库的回调函数其实是中断

下面是DMA发送UART的完成回调函数,其实这里是一个中断里的回调函数,所以信号量要用中断那一套

在这里插入图片描述

http://www.lryc.cn/news/340425.html

相关文章:

  • 【数据结构与算法】:10道链表经典OJ
  • Python SQL解析和转换库之sqlglot使用详解
  • NULL—0—nullptr 三者关系
  • Nginx 请求的 匹配规则 与 转发规则
  • OWASP发布10大开源软件风险清单
  • 大学生前端学习第一天:了解前端
  • 公安机关人民警察证照片采集规范及自拍制作电子版指南
  • 使用Python插入100万条数据到MySQL数据库并将数据逐步写出到多个Excel
  • 【备忘录】openssl记录
  • hadoop编程之工资序列化排序
  • OpenXR手部跟踪接口与VIVE OpenXR扩展详细解析
  • 慎投!5本On Hold全被剔除!新增9本SCI/SSCI被除名!4月WOS更新
  • 华为云CodeArts IDE For Python 快速使用指南
  • C# 截图并保存为图片
  • [html]一个动态js倒计时小组件
  • Hive-Sql复杂面试题
  • WPS二次开发系列:WPS SDk功能就概览
  • 华为OD-C卷-结队编程[200分]
  • 连连看游戏页面网站源码,直接使用
  • 在 Kubernetes 1.24 中使用 Docker:配置与应用指南
  • Canvas使用详细教学:从基础绘图到进阶动画再到实战(海报生成、Flappy Bird 小游戏等),掌握绘图与动画的秘诀
  • 【MATLAB 分类算法教程】_2粒子群算法优化支持向量机SVM分类 - 教程和对应MATLAB代码
  • Vue2电商前台项目(三):完成Search搜索模块业务
  • 算法思想总结:链表
  • Android Room 记录一个Update语句不生效的问题解决记录
  • 使用SpringBoot3+Vue3开发公寓管理系统
  • 有且仅有的10个常见的排序算法,东西不多,怎么就背不下来呢
  • Mac安装配置ElasticSearch和Kibana 8.13.2
  • javaWeb项目-快捷酒店管理系统功能介绍
  • 闲不住,手写一个数据库文档生成工具