打印
[STM32F0]

HAL_UART_RxCpltCallback函数

[复制链接]
1663|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 | 只看该作者
你接收完了,赶紧收下一个....别拖着...

使用特权

评论回复
5
stly|  楼主 | 2021-1-12 23:17 | 只看该作者
我也不知道一次会来几个数据,pc发的5个字符是测试用的,实际传输可能一次来10几个或者几个均有可能,所以我只能一个一个的收,然后自己组包判断处理,

使用特权

评论回复
6
tian111| | 2021-1-12 23:21 | 只看该作者
收一个,保存在缓冲区,赶紧提交下一个接收

你可以提交接收 n 多个.但是每接收到一个来一个中断.方法应该很多

使用特权

评论回复
7
songqian17| | 2021-1-12 23:23 | 只看该作者
HAL 库 原始 设计 是 要 接收 已知长度 的数据。

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

严重牺牲 CPU 的 效率 => HAL 库的 弱点。

使用特权

评论回复
8
stly|  楼主 | 2021-1-12 23:26 | 只看该作者
还是没有解决问题的招

使用特权

评论回复
9
tian111| | 2021-1-12 23:28 | 只看该作者
USART+DMA,使用串口空闲中断来判断帧

使用特权

评论回复
10
chenho| | 2021-1-12 23:29 | 只看该作者
HAL强调的是通用性,但牺牲啦cpu效率,做啦很多无用的代码,建议你根据需求精简代码,另外就你提的问题,需要跟踪看看HAL的代码,要花时间呀

使用特权

评论回复
11
zwll| | 2021-1-12 23:32 | 只看该作者
重写中断函数

使用特权

评论回复
12
chuxh| | 2021-1-12 23:37 | 只看该作者

DMA循环接收。接收是接收,解码是解码,两者分开就行了。或者用空闲帧中断同步解码。

使用特权

评论回复
13
juventus9554| | 2021-1-12 23:40 | 只看该作者
那是你设计的接收逻辑不合理,用DMA循环模式接收,使用__HAL_DMA_GET_COUNTER()来获取已经接收的数量

使用特权

评论回复
14
llljh| | 2021-1-12 23:43 | 只看该作者
用空闲帧中断同步解码

使用特权

评论回复
15
dingy| | 2021-1-12 23:44 | 只看该作者
需要跟踪看看HAL的代码

使用特权

评论回复
16
pengf| | 2021-1-12 23:46 | 只看该作者
接收一个,保存在缓冲区,迅速提交,接收下一个

使用特权

评论回复
17
morrisk| | 2021-1-12 23:50 | 只看该作者
把速度降下来试试看

使用特权

评论回复
18
kangzj| | 2021-1-12 23:52 | 只看该作者
你是不是在中断函数里边处理了很多东西啊

使用特权

评论回复
19
hanwe| | 2021-1-12 23:54 | 只看该作者
中断处理函数有问题

使用特权

评论回复
20
chenjunt| | 2021-1-12 23:56 | 只看该作者
把中断处理函数里边的都去掉 看看是不是还是这样

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

433

主题

7058

帖子

0

粉丝