Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
串口DMA
20
串口DMA接收,接收中断函数中接收的字节数不定
发布于 2023-05-15 10:38:57 浏览:688
订阅该版
[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
被浏览
688
关于作者
yc961213911
这家伙很懒
提问
76
回答
51
被采纳
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
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
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
VISION BOARD 第二弹 基础工程配置和点亮一个LED灯
2
musb移植问题记录【设备注册3次挂起】
3
关于使用CherryUSB时候使用外挂的usb phy 芯片配置的一点注意事项
4
【Vision Board 创客营】Vision Board上的ADC实践
5
FRDM-MCXN947 & RT-Thread的CAN实践——控制GM6020云台电机
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
RT-Thread
DMA
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
潘多拉开发板_Pandora
PWM
定时器
ADC
BSP
中断
keil_MDK
编译报错
socket
MicroPython
GD32
msh
Debug
ulog
SDIO总线
SFUD
rt_mq_消息队列_msg_queue
C++_cpp
本月问答贡献
xiaorui
7
个答案
3
次被采纳
sakumisu
4
个答案
3
次被采纳
三世执戟
31
个答案
1
次被采纳
梦笑真美
18
个答案
1
次被采纳
踩姑娘的小蘑菇
14
个答案
1
次被采纳
本月文章贡献
Z_Y
2
篇文章
5
次点赞
Alipay
2
篇文章
3
次点赞
2345vor
2
篇文章
1
次点赞
比特饼干
1
篇文章
6
次点赞
Lu_盼盼
1
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部