pic - 从 MPLAB 8.92 到 MPLAB X 5.25 : how do I programmatically halt the simulator now?

标签 pic mplab mplab-5.45

我用 PIC 汇编语言编写了一些测试代码,我无意在实际的 PIC MCU 上运行这些代码,而是打算生成跟踪文件,以便以后可以使用单独的工具对其进行分析。因此,我需要一种方法来永久停止特定代码点中的模拟器,而无需在那里手动设置断点。这样我就可以终止代码中的跟踪收集。
回到 MPLAB 8.92,我使用这个简单的技巧来实现:“调用 $”命令。该指令简单地调用自身,迅速溢出堆栈,在 MPLAB 8.92 中,这会通过 CORE-E0001 消息停止模拟器。任务完成!
然而,当我迁移到 MPLAB X 5.25 时,我发现模拟器不再使用这个技巧停止。即使我进入项目设置并指定模拟器应该中断所有类型的警告消息,它也不会停止。
那么,我做错了什么?在 MPLAB X 中使用 MCU 代码停止模拟器的最佳工作方式是什么?请不要建议使用显式断点,这是不切实际的,我实际上需要在数十个项目中设置数百个断点。

最佳答案

在 MPLAB 中转到 Project Properties .在 Categories树:选择 Simulator Options for Simulator现在可见。下 Options categories选择 Warning Messages Break Options然后按 Unlock按钮。
假设您不会在 Watchdog Timer 上停止模拟重置事件。在列表中查找 W0004-CORE: Watchdog Timer has caused a Reset.并更改 Report选项 Break .
Apply按钮。
现在程序模拟将在每个 Watchdog Timer 停止。重置事件。
PS:我使用的是 MPLAB v5.35。要在堆栈溢出时中断,请使用选项 W0012-CORE: Device Resets on stack overflow.

关于pic - 从 MPLAB 8.92 到 MPLAB X 5.25 : how do I programmatically halt the simulator now?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66502328/

相关文章:

c - PIC 中的整数溢出——流到哪里去了?

c - PIC16F887 端口不适用于 XC8 C 编译器

c++ - Pic 显示循环在 5 和 0 之间

c - 试图了解位 ram 地址

c - XC8 库组织和跨多个源文件的#defines

c - 未遵循 "if"上的语句

C18 : Will the compiler "know" a function call will never return?