打印
[STM32F1]

多路USART同时工作是不是有坑?

[复制链接]
401|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
万图|  楼主 | 2025-5-3 07:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
两个串口一起跑的时候总有一个丢数据,是不是中断优先级冲突了?

使用特权

评论回复
沙发
Clyde011| | 2025-5-3 07:24 | 只看该作者
接收的时候建议每帧都校验下长度。

使用特权

评论回复
板凳
公羊子丹| | 2025-5-3 07:25 | 只看该作者
看中断优先级有没有冲突。

使用特权

评论回复
地板
周半梅| | 2025-5-3 07:26 | 只看该作者
DMA方式能规避一点丢数据问题。

使用特权

评论回复
5
帛灿灿| | 2025-5-3 07:26 | 只看该作者
我设置两个USART的波特率差距大点就好了。

使用特权

评论回复
6
童雨竹| | 2025-5-3 07:27 | 只看该作者
F1系列USART接收挺挑配置的。

使用特权

评论回复
7
万图|  楼主 | 2025-5-3 07:28 | 只看该作者
你有没有开接收空闲中断?

使用特权

评论回复
8
Wordsworth| | 2025-5-3 07:29 | 只看该作者
看下是不是用了同一缓冲区?

使用特权

评论回复
9
Bblythe| | 2025-5-3 07:30 | 只看该作者
主循环太忙也会丢数据。

使用特权

评论回复
10
Pulitzer| | 2025-5-3 07:30 | 只看该作者
有个库会自动把串口做缓冲处理。

使用特权

评论回复
11
Uriah| | 2025-5-3 07:32 | 只看该作者
有没有试过串口助手测试稳定性?

使用特权

评论回复
12
一秒落纱| | 2025-5-14 19:30 | 只看该作者
STM32F1NVIC中断控制器支持优先级分组,若多个USART中断优先级相同或高优先级中断频繁抢占CPU,会导致低优先级USART中断处理延迟,接收缓冲区溢出,进而丢失数据

使用特权

评论回复
13
夜阑风雨| | 2025-5-14 20:00 | 只看该作者
USART1USART2的抢占优先级相同,当两者同时触发中断时,NVIC可能随机选择一个中断处理,导致另一个中断被延迟

使用特权

评论回复
14
远山寻你| | 2025-5-14 21:00 | 只看该作者
中断服务函数耗时过长,若USART中断服务函数中存在耗时操作(如复杂计算、长时间等待),会长时间占用CPU,导致其他USART中断无法及时响应,数据丢失

使用特权

评论回复
15
光辉梦境| | 2025-5-14 21:30 | 只看该作者
STM32F1USART硬件接收缓冲区(FIFO)深度有限(通常为1字节),若数据到达速率高于CPU处理速率,且未及时读取接收寄存器,会导致数据丢失

使用特权

评论回复
16
三生万物| | 2025-5-14 22:00 | 只看该作者
未及时清除中断标志位,若在中断服务函数中未正确清除USART的接收中断标志位(如RXNE),会导致中断重复触发或无法再次触发,进而丢失数据

使用特权

评论回复
17
淡漠安然| | 2025-5-14 23:00 | 只看该作者
DMA配置不当,若使用DMA接收数据,但DMA缓冲区配置过小或未及时处理DMA完成中断,会导致数据覆盖或丢失。

使用特权

评论回复
18
暖了夏天蓝了海| | 2025-5-15 01:00 | 只看该作者
合理配置中断优先级,使用NVIC_SetPriority()函数为不同USART设置不同的抢占优先级和子优先级,确保高优先级USART中断能够及时响应。

使用特权

评论回复
19
冰春彩落下| | 2025-5-15 09:00 | 只看该作者
若通信双方支持硬件流控,可通过RTS/CTS信号控制数据流速,防止接收缓冲区溢出。

使用特权

评论回复
20
江河千里| | 2025-5-15 12:00 | 只看该作者
.合理配置中断优先级,使用NVIC_SetPriority()函数为不同USART设置不同的抢占优先级和子优先级,确保高优先级USART中断能够及时响应。

使用特权

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

本版积分规则

86

主题

4853

帖子

1

粉丝