完整教程下載地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980
第7章 STM32H7下載和調試方法(IAR8)
本章教程為大家介紹如何創建IAR8工程,配置方法以及經常用到的一些配置項。
7.1 初學者重要提示
7.2 使用IAR調試和下載程序設置(JLINK)
7.3 使用IAR調試和下載程序設置(STLINK)
7.4 IAR程序調試
7.5 總結
7.1 初學者重要提示
- 如果使用JLINK調試下載STM32H7,務必使用JLINK V9或V10,之前的版本已經不支持。
- 如果使用STLINK調試下載STM32H7,推薦使用最新的電腦端驅動和對應的固件,詳情見第2章的2.6小節。
- JLINK無法下載解決思路以及常見問題整理,適用於其它LINK:http://www.armbbs.cn/forum.php?mod=viewthread&tid=21708。
7.2 使用IAR調試和下載程序設置(JLINK)
調試下載STM32H7,務必使用JLINK V9或V10,之前的版本已經不支持,JLINK的驅動安裝等相關文件已經在本教程第2章的2.5章節有說明。
在上個章節里面,我們已經將Options對話框里面大部分設置選項都做了說明,本章節主要是調試下載的設置。
7.2.1 開發板和JLINK的接線圖
開發板接上JLINK的效果圖如下,JLINK端需要插入開發板贈送的JTAG轉SWD轉接板:
注意轉接板不要插反了:
7.2.2 設置Options里面的Degubber選項
Debug選項主要用於調試設置。
設置完畢后,別忘了點擊OK。
7.2.3 設置Options里面的JLINK選項
注意,在Debugger選擇里面選擇了JLINK后,才可以設置此選項。Setup部分使用默認配置即可,無需修改:
Connection部分要選擇SWD接口:
設置完畢后別忘了點擊OK。
7.2.4 程序下載
前兩步設置好之后,JLINK插到電腦端並跟開發板連接好,將板子上電,就可以下載了。菜單Project->download->download Active Application:
下載成功后將開發板重新上電,可以看到開發板上的LED開始閃爍,IAR的Debug log窗口也有信息展示:
7.3 使用IAR調試和下載程序設置(STLINK)
調試下載STM32H7,請將STLINK固件升級到最新版,關於固件升級和驅動安裝等相關文件已經在本教程第2章的2.6章節有說明。
在上個章節里面,我們已經將Options對話框里面大部分設置選項都做了說明,本章節主要是調試下載的設置。
7.3.1 開發板和STLINK的接線圖
開發板接上STLINK的效果圖如下:
如果是下面這種STLINK,需要接上轉接板:
7.3.2 設置Options里面的Debug選項
Debug選項主要用調試:
7.3.3 設置Options里面的STLINK選項
注意,在Debugger選擇里面選擇了STLINK后,才可以設置此選項。Setup部分選擇SWD接口,其它默認即可:
7.3.4 程序下載
前兩步設置好之后,STLINK插到電腦端並跟開發板連接好,將板子上電,就可以下載了。點擊這里即可:
下載成功后將開發板重新上電,可以看到開發板上的LED開始閃爍,IAR的Debug log窗口也有信息展示。
7.4 IAR程序調試
JLINK或者STLINK設置完畢后,調試是一樣的。
7.4.1 全速運行和單步調試
點擊如下按鈕可以進入調試狀態(下載程序到芯片同時開啟調試):
進入調試狀態后的效果如下:
首先要認識下這11個圖標的含義(進入調試狀態后,鼠標放在這幾個圖標上會有提示):
- 第1個圖標是重新編譯例程並進入調試狀態。
- 第2個圖標是重新進入調試狀態。
- 第3個圖標是停止調試。
- 第4個圖標是Step Over(Step over the current step point),每次點擊以函數為單位運行,不會進入函數內部。
- 第5個圖標是Step Into(Step into the current step point),單步調試,每次點擊運行一行代碼,所以只要有子函數就會進入。
- 第6個圖標是Step out(Step out of the current line),點擊后退出當前運行的函數,執行下一個函數。
- 第7個圖標是Next Statement(Step to the next statement),進入下一個狀態,跟第4個圖標功能差不多。
- 第8個圖標是Run to Cursor(Execute to the current cursor position),直接運行到用戶設置的行,設置方法比較簡單,用戶僅需在那行使用鼠標左鍵點擊一下,可以看到前面有光標即可(注意,程序不能倒着執行,也就是能往回設置)
然后點擊此圖標即可,可以看到前面多了一個綠色的小箭頭,說明已經運行到此行
- 第9個圖標是全速運行。
- 第10個圖標是用於暫停全速運行。
- 第11個圖標是復位調試,重新回到main函數開始執行。
前面幾個圖標的功能,大家多測試幾次就熟練了。
7.4.2 外設寄存器的查看
初次使用IAR8的話,容易出現找不到在哪里查看寄存器的問題,首先需要點擊這里View ->Register
->Register 1(共提供了四個register窗口,打開那個都行,要查看多個外設時,可以同時打開多個窗口查看):
給出的都是CPU寄存器:
這個並不是我們想要的,還有繼續下一步,在紅色的方框區域右擊:
比如查看DAC:
7.4.3 全局變量的查看
針對全局變量,IAR提供了專門提供了Watch1, Watch2,Watch3和Watch4窗口,每個窗口可以添加很多變量。從菜單View ->Watch進行添加:
比如定義了一個全局的32位變量count,用戶可以直接在Watch1窗口里面輸入此變量:
也可以在源文件里面,鼠標右擊此變量進行添加。調試過程中,這些窗口里面添加的變量是會更新的。但是全速運行狀態,這些變量就不會更新,為了解決這個問題,IAR有一個Live Watch可以在全速運行狀態查看變化:
用戶可以直接在Live Watch窗口里面輸入變量查看,如果程序里面做了一個簡單的加法計數,就可以在全速調試狀態查看此變量的動態變化:
7.4.4 局部變量的查看
針對局部變量,IAR專門提供了一個棧窗口,用於查看函數中各種局部變量,這個不需要用戶添加,IAR會自動添加。從菜單View ->Locals進行添加窗口:
局部變量需要進入到那個函數里面才可以查看,這點要特別注意,因為局部變量是來自棧空間的,進入函數申請棧空間,函數退出后,棧空間就會被釋放掉。比如main函數里面一個num局部變量
7.4.5 Flash區或者RAM區的查看
如果要查看Flash區或者RAM區的內容,IAR提供了4個Memory窗口。從菜單View ->Memory進行添加:
比如要查看0x2000 0000地址開始的內容,直接輸入即可,這個地址是STM32H7的DTCM首地址
7.4.6 斷點調試
斷點調試比較重要,進入調整狀態后,如果大家想讓程序在指定的位置停止運行,可以添加斷點,通過這個小紅點來添加(注意,取消斷點也是用的這個圖標)。
比如想在79行添加斷點。
用戶僅需在那行使用鼠標左鍵點擊一下,然后單擊斷點圖標即可,斷點設置好的效果如下:
然后點擊全速運行,如果程序有執行到這個地方,就會停在這里。可以看到綠色小箭頭也顯示在左側了,說明程序執行到這個地方了(此時還沒有執行該語句):
7.4.7 動態更新頻率設置
IAR有個周期性更新頻率設置選項,菜單Tools->Options:
單位都是毫秒,最小1ms:
7.5 總結
對於初學者來說,務必要實際動手操作一遍。特別是調試方法,要熟練掌握,因為以后工程代碼調試時,用到的最多。