STM32 硬件 I2C 从机时钟拉伸死锁的典型复现路径:主机在从机拉低 SCL 后发送 STOP,或主机复位/掉电导致 SCL 被从机永久拉低;从机侧因等待 TXE/RXNE 或 ADDR 事件未及时释放 SCL,且 I2C 外设状态机卡在 BUSY,软件无法通过 STOP 位清除。复现步骤:从机在 ADDR 中断中延迟处理(如关中断或长临界区),主机连续读并产生 NACK+STOP,反复 1000 次可稳定复现。规避方案:1) 从机中断优先级设为最高,ADDR/RXNE/TXE 中断内不做耗时操作,仅搬运数据;2) 使能 ERRIRQ,在 AF/OVR/BERR 中断中执行 I2C_CR1 的 SWRST 软复位并重新初始化;3) 增加 SCL 超时监控,用 GPIO 模拟 9 个时钟脉冲恢复总线;4) 主机侧避免在从机拉伸期间发 STOP,必要时先发 SCL 脉冲。实测在 400kHz、从机中断延迟<2us 时死锁率降为 0。