一、问题现象:

    这几天刚开始上手STM32,使用Keil 环境进行编程,然后使用ULINK2进行在线仿真,在按键处理函数程序中设置断点,却发现按了按键程序没有停在设置的断点,程序正常运行,如下图所示,很是郁闷,以为是程序的问题,打了其它地方的断点却可以停下来。是什么问题呢?

二、原因分析:

    虽然之前用8051单片机的时候经常使用Keil 环境,但没有真正去使用过在线的调试仿真,现在出现问题了也不知所措,在跟陈工沟通交流下,打开Keil 环境中Target Options中的Debug配置,发现我选择的是Use Simulator,如下图所示,这就是问题的所在,Use Simulator是纯软件仿真,跟硬件无关系,也就是我操作按键的话跟硬件有关系,所以程序是无法停在设置的断点。

那要怎样设置按下按键才有效呢,如下图所示,打开Keil 环境中Target Options中的Debug配置选择Use dubug进行仿真调试,如下图所示。

我更改保存之后重新下载程序后进行在线仿真,按下按键程序就停在设置断点的地方。

、总结:

     在线调试仿真是一个很好用调试手段,在之前的公司也经常使用,例如程序跑飞,查找变量值等,都可以通过设置断点来查找,所以要经常去使用仿真来进行调试将能更快验证代码的正确性及查找代码存在的问题。

by 羊羊得亿