MDK的軟體模擬
一、軟體模擬
Keil有很強大的軟體模擬功能,通過軟體模擬可以發現很多將要出現的問題,Keil的模擬可以檢視很多硬體相關的暫存器,通過觀察這些暫存器值的變化可以知道程式碼有沒有正常執行。這樣可以避免頻繁下載程式,延長微控制器Flash壽命。
開始模擬之前,先配置一些選項。
1.在工程設定裡設定好晶片型號和晶振頻率。
2.在“Debug”選項卡中選擇“Use Simulator”,表示使用軟體模擬;選擇“Run to main()”則表示跳過彙編程式碼,直接跳轉到main函式開始模擬。設定下面的“Dialog DLL”項為“DARMSTM.DLL”和“TARMSTM.DLL”;parameter項為“-pSTM32F103C8”,用於設定支援STM32F103C8的軟硬體模擬。
3.點選開始模擬,這個時候會多出來一個工具條,就是Debug工具條。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
1:復位,其功能等同於硬體上按復位按鈕,相當於實現了一次硬復位。按下該按鈕後,程式碼會重新從頭開始執行。
2:執行到斷點處,按按鈕用來快速執行到斷點處,有時候並不需要觀看每步時怎麼執行的,而是想快速執行到程式的某個地方看結果,這個按鈕就可以實現這樣的功能,前提是已在檢視的地方設定了斷點。
3:停止執行,此按鈕在程式一直執行的時候變為有效,可以使程式停止下來進入到單步除錯狀態。
4:執行進去,該按鈕用來實現執行到某個函式裡面去的功能,在沒有函式的情況下等同於執行過去按鈕。
5:執行過去,在碰到有函式的地方,通過該按鈕就可以單步執行過這個函式,而不進入這個函式單步執行。
6:執行出去,該按鈕是進入了函式單步除錯的時候,有時候可能不必再執行該函式的剩餘部分了,通過該按鈕就直接一步執行完函式餘下的部分,並跳出函式回到函式被呼叫的位置。
7:執行到游標處:該按鈕可以迅速使程式執行到游標處,與執行到斷點處按鈕功能類似。
8:彙編視窗,通過該按鈕可以檢視彙編程式碼,這對分析程式很有用。
9:堆疊區域性變數視窗,通過該按鈕可以顯示Call Stack+Locals視窗,顯示當前函式的區域性變數及其值,方便檢視。
10:觀察視窗,MDK5提供2個觀察視窗(下拉選擇),該按鈕按下則彈出一個顯示變數的視窗。輸入想觀察的變數或表示式,即可檢視其值,是很常用的除錯視窗。
11:記憶體檢視視窗,MDK5提供4個記憶體檢視視窗,按下按鈕,則彈出一個記憶體檢視視窗,可以在裡面輸入要檢視的記憶體地址,然後觀察這一片記憶體的變化情況。
12:串列埠列印視窗,MDK5提供4個串列埠列印視窗。按下該按鈕,則彈出一個類似串列埠除錯助手介面的視窗,用來顯示從串列埠打印出來的內容。
13:邏輯分析視窗,該圖示下面有3個選項,一般用第一個,也就是邏輯分析視窗。通過SETUP按鈕新建一些IO口,於是可以觀察這些IO的電平變化情況,並以多種形式顯示出來,比較直觀。
14:系統檢視視窗,該按鈕可以提供各種外設暫存器的檢視視窗(通過下拉選擇),選擇對應外設即可調出該外設的相關暫存器表,並顯示這些暫存器的值,方便檢視設定是否正確。
二、硬體模擬
硬體模擬則是程式下載到微控制器中,進行的模擬,是程式實際在微控制器中執行的情況。
需要選擇後面那個選項,然後在下拉單裡選擇自己的模擬器。然後後面步驟和軟體模擬一樣。
注:要在邏輯硬體模擬裡使用邏輯分析儀之類的工具,要開“Trace”
②新增io
③執行
二、軟體模擬時,MDK Logic Analyzer新增current logic analyzer signals時顯示Unknown Signal
①.首先確定輸入格式正確 PXn 就是 輸入PORTX.n
X是A,B,C… ;
n就是對應的引腳編號
例程PA6 對應輸入就是 PORTA.6
②.設定 Dialog DLL (Options裡面選擇debug)分別為: DARMSTM.DLL 和TARMSTM.DLL, Parameter 均為:
-pSTM32F103RC,用於設定支援 STM32F103RC 的軟硬體模擬(即可以通過 Peripherals
選擇對應外設的對話方塊觀察模擬結果)。