STM32用串口重定向printf函数的问题

[复制链接]
6383|35
tabmone 发表于 2025-5-23 10:09 | 显示全部楼层
ISR执行时间过长,占用串口资源。
plsbackup 发表于 2025-5-23 10:33 | 显示全部楼层
串口引脚(TX/RX)受电磁干扰或接线不良。
cemaj 发表于 2025-5-23 11:02 | 显示全部楼层
通常是由于并发访问串口资源或中断处理不当导致的。
maqianqu 发表于 2025-5-23 13:59 | 显示全部楼层
尝试调整定时器中断的频率,使其不会与串口数据传输产生冲突。
51xlf 发表于 2025-5-23 15:10 | 显示全部楼层
主程序未及时处理缓冲区数据,造成旧数据被覆盖。
4y1b3 发表于 2025-5-31 23:49 | 显示全部楼层
如果你需要非阻塞方式输出(如 HAL_UART_Transmit_DMA()),你可以封装自己的环形缓冲区或使用 SEGGER RTT、ITM。
GlenX 发表于 2025-6-10 17:26 | 显示全部楼层

STM32用串口重定向printf函数的问题

定时中断扰乱了PRINTF.如果printf也是一秒一次,则可以在中断里设置一个标志,当中断退出时将标志置一,在主程序种查询这个编制,如果置一则立即printf,否则不执行,这样就躲开了。


hmcu666 发表于 2025-6-11 11:51 | 显示全部楼层
环形缓冲区就像一个桶,中断时它从桶里取水,外部不断往桶里加水。
Pretext 发表于 2025-6-13 22:37 | 显示全部楼层
可能是内存空间使用超限,检查缓冲区大小及内存分配是否合理。
PreWorld 发表于 2025-6-15 13:15 | 显示全部楼层
串口DMA传输能连续发送数据,无需中断处理,适用于大批量数据。
明日视界 发表于 2025-6-18 07:38 | 显示全部楼层
确保串口中断优先级至少与定时器中断相同,防止串口通信被定时器中断打断。
LLGTR 发表于 2025-6-18 22:59 | 显示全部楼层
当关键数据发送时,为了防止中断干扰,可以先暂时关闭中断,确保数据完整传输。
wex1002 发表于 2025-6-19 19:50 | 显示全部楼层
中断服务程序太慢,抢了串口传输时间,得优化ISR处理速度或分任务处理。
流星flash 发表于 2025-6-22 07:18 | 显示全部楼层
中断和printf冲突,中断打断printf导致串口数据错乱。
lllook 发表于 2025-6-24 07:21 | 显示全部楼层
可能是中断服务程序太复杂,占用CPU时间过长,影响了主程序执行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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