柴库柴库
发表于 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
中断处理函数没有正确处理接收到的每个字符