一、問題現象:
這幾天剛開始上手STM32,使用Keil 環境進行編程,然后使用ULINK2進行在線仿真,在按鍵處理函數程序中設置斷點,卻發現按了按鍵程序沒有停在設置的斷點,程序正常運行,如下圖所示,很是郁悶,以為是程序的問題,打了其它地方的斷點卻可以停下來。是什么問題呢?
二、原因分析:
雖然之前用8051單片機的時候經常使用Keil 環境,但沒有真正去使用過在線的調試仿真,現在出現問題了也不知所措,在跟陳工溝通交流下,打開Keil 環境中Target Options中的Debug配置,發現我選擇的是Use Simulator,如下圖所示,這就是問題的所在,Use Simulator是純軟件仿真,跟硬件無關系,也就是我操作按鍵的話跟硬件有關系,所以程序是無法停在設置的斷點。
那要怎樣設置按下按鍵才有效呢,如下圖所示,打開Keil 環境中Target Options中的Debug配置選擇Use dubug進行仿真調試,如下圖所示。
我更改保存之后重新下載程序后進行在線仿真,按下按鍵程序就停在設置斷點的地方。
三、總結:
在線調試仿真是一個很好用調試手段,在之前的公司也經常使用,例如程序跑飛,查找變量值等,都可以通過設置斷點來查找,所以要經常去使用仿真來進行調試將能更快驗證代碼的正確性及查找代碼存在的問題。
by 羊羊得億