Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
串口DMA
20
串口DMA接收,接收中断函数中接收的字节数不定
发布于 2023-05-15 10:38:57 浏览:1006
订阅该版
[tocm] ### 1、F407VG,接收固定长度报文(9字节),DMA中断接收,中断函数接收的字节数不是9 1、中断接收函数打印接收字节数 ![DMA字节数.png](https://oss-club.rt-thread.org/uploads/20230515/90f081f59ac5f6936b2be1ba70bb7e9b.png) 2、读取部分打印接收字节数 ![DMAmq接收字节数.png](https://oss-club.rt-thread.org/uploads/20230515/469ab1a05bb128daa095ef887109197e.png) 3、打印结果 ![dma字节3.png](https://oss-club.rt-thread.org/uploads/20230515/a32525e6e2a2c62bcc956c6b6598d7ed.png)
查看更多
出出啊
2023-05-16
恃人不如自恃,人之为己者不如己之自为也
1. 任何靠中断断帧的思路都是不可靠的。 2. 在中断响应以及其回调函数内执行 print 的行为都是应该避免的。 3. 既然知道帧长度是固定的,那么在应用层处理可行不可行?先把所有收到的数据缓存到应用层,无论这次收到 1 个字节还是 8 个字节,每次接收到数据都判断一次已经接收的数据量够不够 9 个字节。够:处理前 9 个字节,然后把缓存里的前 9 个字节扔掉;不够,等着继续接收。这样做啥也不用修改。唯一需要考虑的是**驱动框架层能不能完整有效的把所有自己接收到并交给你应用层** 4. hal dma 里的那几个中断,在 drv_usart.c 里可能全当 TC 处理了。 5. hal 层实现只是芯片厂家提供的一种*实现可能*。并不代表全部,如果真的介意他的处理方式,还是得用寄存器从最底层自己写
7
个回答
默认排序
按发布时间排序
红枫
认证专家
2023-05-16
这家伙很懒,什么也没写!
DMA空闲中断的空闲时间很短且不可调,所以依赖DMA空闲中断来分帧,可靠性差。
winfeng
认证专家
2023-05-15
这家伙很懒,什么也没写!
msgt不能用局部变量
yc961213911
2023-05-15
这家伙很懒
1、DMA默认开启了传输完成、半传输、传输错误、直接模式错误中断,全部关掉 ![DMA修改.png](https://oss-club.rt-thread.org/uploads/20230515/c4f0b8ad27b4fd50db84cabc83e69718.png) 2、修改回调函数 ![中断回调.png](https://oss-club.rt-thread.org/uploads/20230515/163545ce3f0138be6fa1166818fb77e0.png) 3、测试结果,暂时正常 ![结果.png](https://oss-club.rt-thread.org/uploads/20230515/766c00d0bfb9c2a4a9a36e7ed8b14cc5.png) @winfeng
哈喽你好啊
2024-01-31
这家伙很懒,什么也没写!
看了上述讨论受益匪浅
ZWH
2024-02-01
这个人很勤快,没空留下点什么
学习到了。受益匪浅
Milo
2024-02-01
这家伙很懒,什么也没写!
uart只是保证一个frame是连续,你可以理解为一个字节的位是连续的,从来不保证frame与frame之间是连续的,很多MCU的uart外设甚至有frame delay功能,靠空闲中断断帧是很不靠谱的,uart只是一个流式协议,你理解的帧这个概念在uart里不存在,uart里的帧不是你理解的帧,所以所谓的断帧一定是上层的事情,包括上面很多人说rtu这种,这本身也都是上层协议的约定。
撰写答案
登录
注册新账号
关注者
1
被浏览
1k
关于作者
yc961213911
这家伙很懒
提问
78
回答
54
被采纳
5
关注TA
发私信
相关问题
1
STM32H7的BSP中串口支持DMA的只有UART2?
2
H743串口2DMA接收数据出错
3
串口DMA接收模式,是否需要在RT-Thread Setting中开启DMA?
4
怎么设置串口dma收发
5
STM32串口DMA出现了帧错误中断
6
串口dma打开失败要怎么排查
7
UART接收 控制台输出打印数据,第二次总会分开输出
8
潘多拉iot加入uart3开启DMA用作freemodbus编译报错
9
4个串口通讯传感器怎么在同一个线程里轮询向传感器发送指令并等待传感器反馈数据;
10
柿饼M3SDK如何开启串口DMA?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
7
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部