柴库柴库 发表于 2025-7-1 09:08

UART接收中断当字符超过一个时,就出错

在STM32F401RE板上使用STM32Cube IDE中的HAL库已经实现了UART接收中断。接受一个字符时正常接受,当字符超过一个时,就出错,无法处理。

这种情况如何处理呢?

jobszheng 发表于 2025-7-1 09:37

自己写一份串口接收中断吧

qintian0303 发表于 2025-7-1 11:10

通过断点看一下接受的数据过程,看一看是不是接受数组有问题,这个出错是什么错误啊

probedog 发表于 2025-7-1 16:05

接收缓冲区溢出导致的?

elephant00 发表于 2025-7-1 16:09

RTS/CTS误启用?

duo点 发表于 2025-7-1 16:56

启用全局中断,波特率、数据位、停止位要与发送端一致。禁用硬件流控

classroom 发表于 2025-7-1 17:05

估计是缓冲区未正确初始化或大小不足。

flycamelaaa 发表于 2025-7-1 18:06

中断标志未清除?手动清除USART_SR_RXNE标志。

onlycook 发表于 2025-7-1 18:42

检查UART中断优先级是否合理。

powerantone 发表于 2025-7-1 19:07

中断使能或者是禁用逻辑错误吧。。

stormwind123 发表于 2025-7-1 20:07

HAL_UART_RxCpltCallback未被调用或处理逻辑错误?

jcky001 发表于 2025-7-1 21:08

是否用了HAL提供的环形缓冲区机制?

cr315 发表于 2025-7-1 23:00

波特率不匹配?

wangdezhi 发表于 2025-7-3 16:28

新数据到来时前一个字符未处理完毕

olivem55arlowe 发表于 2025-7-3 17:39

检查并正确配置UART参数            

usysm 发表于 2025-7-3 18:36

环形缓冲区实现错误            

macpherson 发表于 2025-7-4 09:28

如果其他高优先级中断频繁触发,可能会打断当前的UART接收中断处理

robincotton 发表于 2025-7-4 13:13

正确清空中断标志。            

abotomson 发表于 2025-7-4 13:57

缓冲区可能不够大,导致溢出。            

mikewalpole 发表于 2025-7-4 14:52

中断处理函数没有正确处理接收到的每个字符
页: [1] 2
查看完整版本: UART接收中断当字符超过一个时,就出错