STM32 硬件 I2C 从机在时钟拉伸时卡死的根因通常不在从机本身,而在主机侧或总线状态。常见根因有三类:1) 主机不支持或未正确处理 SCL 低电平拉伸,超时后复位总线,从机仍停在等待释放 SCL 的状态;2) 从机在 ADDR/TXE/RXNE 中断中执行过长操作(如 Flash 写、阻塞延时),导致 SCL 被拉低过久,主机判定总线错误;3) 从机 ERR 中断未清除或 BERR/ARLO 后未重新初始化外设,I2C 状态机锁死。规避方案:从机中断服务函数只做数据搬运,耗时操作移到主循环;使能 ERR 中断并在 BERR/ARLO 时执行 I2C_DeInit 后重新初始化;主机侧增加 SCL 拉伸超时与总线恢复(发送 9 个时钟);必要时改用 GPIO 模拟从机或降低速率。