[STM32F4] 串口卡死在中断里,查询memory数据,恢复正常

[复制链接]
858|14
地瓜patch 发表于 2025-8-29 10:06 | 显示全部楼层 |阅读模式
本帖最后由 地瓜patch 于 2025-8-29 10:35 编辑

串口1通过中断接收数据,当PC模拟发送六个字节时,串口1卡死在接收中断void USART1_IRQHandler(void)里。
8091768b10a5ff1998.png
当我在memory1中查询串口1接收寄存器0x40011004数据时,程序恢复正常,能够继续往下跑。
写上0x40011004这个地址,点回车瞬间,恢复正常。
61768b10b1ac0831.png

神奇不


进一步测试,1.在call stack...标签,pc发送数据,程序卡在接收中断void USART1_IRQHandler(void)。
2.在memory1标签,此时观察寄存器为0x40011004这个地址的数据,pc发送数据,程序正常。
3..在call stack...标签,pc发送数据,程序卡在接收中断void USART1_IRQHandler(void)。切换到memory1标签,程序正常。
4.在memory1标签,此时观察寄存器为其他地址,比如0x80011004这个地址的数据,pc发送数据,程序卡在接收中断void USART1_IRQHandler(void)。切换地址到0x40011004,程序正常。
5.通电不仿真,程序没跑,估计卡在中断里了。





jiekou001 发表于 2025-8-29 20:41 | 显示全部楼层
说明触发了中断。
 楼主| 地瓜patch 发表于 2025-8-30 19:59 | 显示全部楼层
jiekou001 发表于 2025-8-29 20:41
说明触发了中断。

进入中断了,出不来
星辰大海不退缩 发表于 2025-8-31 22:57 | 显示全部楼层
是不是还跟速率有关系
AdaMaYun 发表于 2025-8-31 23:35 | 显示全部楼层
中断问题
szt1993 发表于 2025-8-31 23:58 | 显示全部楼层
ST的基础知识问题了解一下
海滨消消 发表于 2025-9-1 16:52 | 显示全部楼层
中断标志未清除?
duo点 发表于 2025-9-1 16:53 | 显示全部楼层
缓冲区溢出?接收缓冲区未及时处理,导致数据覆盖或溢出。
onlycook 发表于 2025-9-1 16:53 | 显示全部楼层
未检查 USART 硬件状态,导致在错误状态下持续触发中断。
豌豆爹 发表于 2025-9-1 16:54 | 显示全部楼层
共享资源冲突?数据竞争导致缓冲区数据异常。
麻花油条 发表于 2025-9-1 16:55 | 显示全部楼层
在中断服务函数中,必须清除触发中断的标志位。

评论

跟踪程序确认清掉标志了  发表于 2025-9-1 17:18
七毛钱 发表于 2025-9-1 16:56 | 显示全部楼层
中断处理尽量简短,启用 USART 空闲中断。
内政奇才 发表于 2025-9-1 16:56 | 显示全部楼层
如果使用 HAL 库,优先调用 HAL_UART_Receive_IT() 等函数,而不是直接操作寄存器。
 楼主| 地瓜patch 发表于 2025-9-1 17:17 | 显示全部楼层
海滨消消 发表于 2025-9-1 16:52
中断标志未清除?

跟踪查过,标志都清掉了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

1991

主题

15399

帖子

31

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