[STM32F7] HAL库BUG中串口读写冲突问题怎么解决而不改HAL?

[复制链接]
2577|26
 楼主| liyancao001 发表于 2022-11-14 08:45 | 显示全部楼层 |阅读模式
最近在搞H767中的串口,发现多数据同时读写时卡死在读取中断中读取状态是否就绪哪里,当时是一直卡在TX状态上。从网上查到两种解决方案:

1.把HAL库中串口发送的函数中加锁、把状态设为TX、解锁这三句话注释掉。
2.不用常用的使能中断函数,然后自己写中断服务程序
这两种测试都是有效果的,但是我是用STM32CUBE生成的代码,而上面两种办法再重新生成以后都会修改掉之前的改动,万一时间长了容易忘记这地方。
因此,哪位大神知道这地方怎么使用是最正确的呢?是不是这地方不算BUG而单纯只是使用方式不对呢?

一只眠羊 发表于 2022-12-15 02:00 | 显示全部楼层
属实,他这个cubemx生成一遍,程序就刷新了一遍,白改

我吃小朋友 发表于 2022-12-15 02:32 | 显示全部楼层
不是说,放在规定的区域,程序是不会被修改的么

未说出口的像你 发表于 2022-12-15 03:04 | 显示全部楼层
你自己写中断程序应该是OK

月亮一键变蓝 发表于 2022-12-15 03:36 | 显示全部楼层
我现在是自己写中断逻辑,反正没遇到你说的那种情况

在曼谷的春 发表于 2022-12-15 04:08 | 显示全部楼层
按理来说,第二种还是比较好用的

失物招領 发表于 2022-12-15 04:40 | 显示全部楼层
为啥会出现读取状态出现问题呢?是没清标记么?

将爱藏于深海 发表于 2022-12-15 05:12 | 显示全部楼层
发送这样的话,你可以用DMA发送是不是就好了

温室雏菊 发表于 2022-12-15 05:44 | 显示全部楼层
你发送的数据有多大多频繁啊?

她已醉 发表于 2022-12-15 06:16 | 显示全部楼层
感觉不应该会出现发送读取中断标记失败的情况啊,你这操作可能有点问题吧

春日负喧 发表于 2022-12-15 06:48 | 显示全部楼层
用第二种可以,第一种好像用cubemx更新一下,就又没了

probedog 发表于 2024-5-16 10:03 | 显示全部楼层
优化你的应用代码
laocuo1142 发表于 2024-5-16 17:00 | 显示全部楼层
更新HAL库至最新版本
 楼主| liyancao001 发表于 2024-6-23 09:55 | 显示全部楼层
这个问题官方给修复了吗?知道如何实现的吗?
jf101 发表于 2024-6-23 14:46 | 显示全部楼层
是官方库文件导致的嘛?目前没有遇到过

评论

大数量同时收发时容易触发这个BUG,你可以找两个单片机,单片机1的TX、RX分别和单片机2的RX、TX接到一起,然后让两个单片机一直不停的都发数据,同时用中断接收收据,很快接收就会死掉。  发表于 2024-5-25 14:59
OKAKAKO 发表于 2024-6-24 20:06 | 显示全部楼层
其实是不是有可能跟处理时序机制导致的,我遇到过CAN口一直通讯,10分钟后系统卡死问题,后来换了MCU就好了
狗啃模拟 发表于 2024-7-31 23:36 | 显示全部楼层
直接修改 HAL 库的源码可能会导致不可预见的问题,并且在重新生成代码时会被覆盖。尽量避免修改 HAL 库的源代码。
stormwind123 发表于 2024-8-9 19:18 | 显示全部楼层
中断优先级和嵌套是否正确
两只袜子 发表于 2024-8-9 19:19 | 显示全部楼层
最小化中断服务程序或者进行任务分解
jcky001 发表于 2024-8-9 19:20 | 显示全部楼层
代码重构、使用回调函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

34

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部