我们编写了STM32L072,在较低层使用了来自cubeMX的HAL库。
请注意,我企业中的“编程风格”并不涉及在嵌入式设备中包含看门狗。没有评论。
在一项特定的现场测试(很多测试)中,该设备停止工作(即:屏幕冻结,并且通信总线上没有响应,但PWM驱动器正在工作)。
>设备已重新启动,经过几分钟的工作,冻结再次发生。这发生在我们到达之前几次。
我们插入了JTAG / ST-LinkV2,总线或屏幕上没有任何变化。 拔下闪光灯后,设备无需重启即可重新开始工作(如果已经发生,我们可以识别出初始化模式)。
编辑-评论和摘要的答案:
答案 0 :(得分:2)
很难在不了解您的软件的情况下进行确定。如果PWM正在运行,则显然振荡器没有停止。听起来该代码可能具有嵌入式软件断点指令。默认情况下,片上调试在达到断点时不会停止外设时钟。
应注意仅在连接 host 调试器(即调试器软件,而不仅仅是物理JTAG硬件)时阻止此类指令,例如:
if (CoreDebug->DHCSR & 1) __BKPT(0);
如果断点不是调试器的条件,则处理器将停止以任何方式重新启动它(除了看门狗,最好是独立的看门狗,因为可以将窗口看门狗配置为在遇到断点时停止其时钟)。
分离调试器时,将释放断点,这可能是这里发生的情况。