[STM32F0] HAL_UART_RxCpltCallback函数

[复制链接]
2172|25
 楼主| stly 发表于 2021-1-12 23:06 | 显示全部楼层 |阅读模式
在HAL_UART_RxCpltCallback函数中接收数据,每次pc发来5个字符,我只能接到钱两个?一直这样发,每次也是接到前两个
bqyj 发表于 2021-1-12 23:11 | 显示全部楼层

我设置的是每次接收1个字节
wenfen 发表于 2021-1-12 23:13 | 显示全部楼层
你不会一次多接收几个?
zhuhuis 发表于 2021-1-12 23:16 | 显示全部楼层
你接收完了,赶紧收下一个....别拖着...
 楼主| stly 发表于 2021-1-12 23:17 | 显示全部楼层
我也不知道一次会来几个数据,pc发的5个字符是测试用的,实际传输可能一次来10几个或者几个均有可能,所以我只能一个一个的收,然后自己组包判断处理,
tian111 发表于 2021-1-12 23:21 | 显示全部楼层
收一个,保存在缓冲区,赶紧提交下一个接收

你可以提交接收 n 多个.但是每接收到一个来一个中断.方法应该很多
songqian17 发表于 2021-1-12 23:23 | 显示全部楼层
HAL 库 原始 设计 是 要 接收 已知长度 的数据。

当然 有人 改为 接收 一个字节 就 中断一次,

严重牺牲 CPU 的 效率 => HAL 库的 弱点。
 楼主| stly 发表于 2021-1-12 23:26 | 显示全部楼层
还是没有解决问题的招
tian111 发表于 2021-1-12 23:28 | 显示全部楼层
USART+DMA,使用串口空闲中断来判断帧
chenho 发表于 2021-1-12 23:29 | 显示全部楼层
HAL强调的是通用性,但牺牲啦cpu效率,做啦很多无用的代码,建议你根据需求精简代码,另外就你提的问题,需要跟踪看看HAL的代码,要花时间呀
zwll 发表于 2021-1-12 23:32 | 显示全部楼层
重写中断函数
chuxh 发表于 2021-1-12 23:37 | 显示全部楼层

DMA循环接收。接收是接收,解码是解码,两者分开就行了。或者用空闲帧中断同步解码。
juventus9554 发表于 2021-1-12 23:40 | 显示全部楼层
那是你设计的接收逻辑不合理,用DMA循环模式接收,使用__HAL_DMA_GET_COUNTER()来获取已经接收的数量
llljh 发表于 2021-1-12 23:43 | 显示全部楼层
用空闲帧中断同步解码
dingy 发表于 2021-1-12 23:44 | 显示全部楼层
需要跟踪看看HAL的代码
pengf 发表于 2021-1-12 23:46 | 显示全部楼层
接收一个,保存在缓冲区,迅速提交,接收下一个
morrisk 发表于 2021-1-12 23:50 | 显示全部楼层
把速度降下来试试看
kangzj 发表于 2021-1-12 23:52 | 显示全部楼层
你是不是在中断函数里边处理了很多东西啊
hanwe 发表于 2021-1-12 23:54 | 显示全部楼层
中断处理函数有问题
chenjunt 发表于 2021-1-12 23:56 | 显示全部楼层
把中断处理函数里边的都去掉 看看是不是还是这样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

433

主题

7058

帖子

0

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