問題現象
STM32 在線調試時,Watch 窗口變量值不自動刷新,需手動點擊才更新。
解決方案
- 打開 MDK 調試會話
- 菜單欄 → View → Periodic Window Update
- 勾選該選項
原理說明
- Watch 窗口更新機制為輪詢制,非真正實時(硬件斷點/跟蹤除外)
Periodic Window Update 啟用後,調試器按固定間隔讀取目標內存並刷新界面
- 間隔通常為數百毫秒,受 JTAG/SWD 速度、變量數量影響
- 注意:頻繁輪詢會佔用調試帶寬,可能影響單步執行響應速度
進階技巧
- 關鍵變量單獨監視:減少 Watch 窗口條目數量提高刷新率
- 使用 Memory 窗口:觀察連續內存區(數組/結構體)更直觀
- 配合 ETM/ITM 跟蹤:Cortex-M3/M4/M7 支持指令跟蹤,可實現真正實時數據流(需 ULINKpro/J-Link Plus 以上)
- Live Watch (Keil MDK 5.28+):運行時無侵入式讀取,不暫停 CPU,適合控制環變量監控
本文整理自 MDK 實戰調試經驗總結。