我们编写了一个STM32L072,使用从cubeMX生成的较低层的HAL库。
请注意,我的企业中的“编程风格”并不涉及在他们的嵌入式设备中包含一个看门狗。无可奉告。
在一次特定的现场测试期间(在许多次测试中),设备停止工作(即:屏幕冻结,通信总线上没有响应,但PWM驱动程序正在工作)。
设备已经重新启动,几分钟后,冻结再次发生。这件事发生在我们到达前几次。
我们插入了JTAG/ screen 2,总线或屏幕上没有任何变化。一旦我们拔掉闪光灯,设备就会在没有重置的情况下重新工作(如果它发生了,我们就可以识别出初始化模式)。
编辑-回复评论和重述:
发布于 2019-04-12 11:31:19
在不了解更多软件的情况下,很难确定。如果PWM正在运行,显然振荡器没有停止。听起来,代码可能有一个嵌入式软件断点指令。在默认情况下,片上调试不会在碰到断点时停止外围时钟。
当主机调试器被附加(即调试器软件,而不仅仅是物理JTAG硬件)时,这种指令应该被保护为仅阻塞,例如:
if (CoreDebug->DHCSR & 1) __BKPT(0);如果断点不以调试器为条件,处理器将停止运行,而不需要重新启动它(除了一个看门狗,最好是独立的看门狗,因为可以配置窗口的看门狗,以便在命中断点时停止其时钟)。
当调试器被分离时,断点将被释放,这可能就是这里正在发生的情况。
https://stackoverflow.com/questions/55649198
复制相似问题