日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【STM32】STLINK调试程序教程

發(fā)布時(shí)間:2024/4/24 编程问答 80 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【STM32】STLINK调试程序教程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 概述
    • 02. STLINK調(diào)試程序
    • 03. 附錄
    • 04. 聲明

01. 概述

在實(shí)際的開發(fā)過程中,如果程序比較簡(jiǎn)單就不需要調(diào)試程序,但是對(duì)于比較復(fù)雜的程序,往往需要通過調(diào)試來解決bug。串口只能下載代碼,并不能實(shí)時(shí)跟蹤調(diào)試,而利用調(diào)試工具,比如 JLINK、ULINK、STLINK等就可以實(shí)時(shí)跟蹤程序,從而找到你程序中的 bug,使你的開發(fā)事半功倍。

STLINK 支持 JTAG 和 SWD,同時(shí) STM32F4 也支持 JTAG 和 SWD。所以,我們有 2 種方式可以用來調(diào)試,JTAG 調(diào)試的時(shí)候,占用的 IO 線比較多,而 SWD 調(diào)試的時(shí)候占用的 IO 線很少,只需要兩根即可。

02. STLINK調(diào)試程序

2.1 點(diǎn)擊開始調(diào)試按鈕

編譯一下工程。然后點(diǎn)擊:(開始/停止仿真按鈕),開始仿真(如果開發(fā)板的代碼沒被更新過,則會(huì)先更新代碼(即下載代碼),再仿真,你也可以通過按下載按鈕,只下載代碼,而不進(jìn)入仿真。特別注意:開發(fā)板上的 B0和 B1 都要設(shè)置到 GND,否則代碼下載后不會(huì)自動(dòng)運(yùn)行的!)

2.2 跳轉(zhuǎn)到主函數(shù)執(zhí)行

2.3 Debug工具條介紹

因?yàn)槲覀冎肮催x了 Run to main()選項(xiàng),所以,程序直接就運(yùn)行到了 main 函數(shù)的入口處。另外,此時(shí) MDK 多出了一個(gè)工具條,這就是 Debug 工具條,這個(gè)工具條在我們仿真的時(shí)候是非常有用的,下面簡(jiǎn)單介紹一下 Debug 工具條相關(guān)按鈕的功能。

復(fù)位:其功能等同于硬件上按復(fù)位按鈕。相當(dāng)于實(shí)現(xiàn)了一次硬復(fù)位。按下該按鈕之后,代碼會(huì)重新從頭開始執(zhí)行。

執(zhí)行到斷點(diǎn)處:該按鈕用來快速執(zhí)行到斷點(diǎn)處,有時(shí)候你并不需要觀看每步是怎么執(zhí)行的,而是想快速的執(zhí)行到程序的某個(gè)地方看結(jié)果,這個(gè)按鈕就可以實(shí)現(xiàn)這樣的功能,前提是你在查看的地方設(shè)置了斷點(diǎn)。

停止運(yùn)行:此按鈕在程序一直執(zhí)行的時(shí)候會(huì)變?yōu)橛行?#xff0c;通過按該按鈕,就可以使程序停止下來,進(jìn)入到單步調(diào)試狀態(tài)。

執(zhí)行進(jìn)去:該按鈕用來實(shí)現(xiàn)執(zhí)行到某個(gè)函數(shù)里面去的功能,在沒有函數(shù)的情況下,是等同于執(zhí)行過去按鈕的。

執(zhí)行過去:在碰到有函數(shù)的地方,通過該按鈕就可以單步執(zhí)行過這個(gè)函數(shù),而不進(jìn)入這個(gè)函數(shù)單步執(zhí)行。

執(zhí)行出去:該按鈕是在進(jìn)入了函數(shù)單步調(diào)試的時(shí)候,有時(shí)候你可能不必再執(zhí)行該函數(shù)的剩余部分了,通過該按鈕就直接一步執(zhí)行完函數(shù)余下的部分,并跳出函數(shù),回到函數(shù)被調(diào)用的位置。

執(zhí)行到光標(biāo)處:該按鈕可以迅速的使程序運(yùn)行到光標(biāo)處,其實(shí)是挺像執(zhí)行到斷點(diǎn)處按鈕功能,但是兩者是有區(qū)別的,斷點(diǎn)可以有多個(gè),但是光標(biāo)所在處只有一個(gè)。

匯編窗口:通過該按鈕,就可以查看匯編代碼,這對(duì)分析程序很有用。

堆棧局部變量窗口:通過該按鈕,顯示 Call Stack+Locals 窗口,顯示當(dāng)前函數(shù)的局部變量及其值,方便查看。

觀察窗口:MDK5 提供 2 個(gè)觀察窗口(下拉選擇),該按鈕按下,會(huì)彈出一個(gè)顯示變量的窗口,輸入你所想要觀察的變量/表達(dá)式,即可查看其值,是很常用的一個(gè)調(diào)試窗口。

內(nèi)存查看窗口:MDK5 提供 4 個(gè)內(nèi)存查看窗口(下拉選擇),該按鈕按下,會(huì)彈出一個(gè)內(nèi)存查看窗口,可以在里面輸入你要查看的內(nèi)存地址,然后觀察這一片內(nèi)存的變化情況。是很常用的一個(gè)調(diào)試窗口

串口打印窗口:MDK5 提供 4 個(gè)串口打印窗口(下拉選擇),該按鈕按下,會(huì)彈出一個(gè)類似串口調(diào)試助手界面的窗口,用來顯示從串口打印出來的內(nèi)容。

邏輯分析窗口:該圖標(biāo)下面有 3 個(gè)選項(xiàng)(下拉選擇),我們一般用第一個(gè),也就是邏輯分析窗口(Logic Analyzer),點(diǎn)擊即可調(diào)出該窗口,通過 SETUP 按鈕新建一些 IO 口,就可以觀察這些 IO 口的電平變化情況,以多種形式顯示出來,比較直觀。

系統(tǒng)查看窗口:該按鈕可以提供各種外設(shè)寄存器的查看窗口(通過下拉選擇),選擇對(duì)應(yīng)外設(shè),即可調(diào)出該外設(shè)的相關(guān)寄存器表,并顯示這些寄存器的值,方便查看設(shè)置的是否正確。

Debug 工具條上的其他幾個(gè)按鈕用的比較少,我們這里就不介紹了。以上介紹的是比較常用的,當(dāng)然也不是每次都用得著這么多,具體看你程序調(diào)試的時(shí)候有沒有必要觀看這些東西,來決定要不要看。

特別注意:串口打印窗口和邏輯分析窗口僅在軟件仿真的時(shí)候可用,而 MDK5 對(duì) STM32F4的軟件仿真,基本上不支持(故本教程直接沒有對(duì)軟件仿真進(jìn)行介紹了),所以,基本上這兩個(gè)窗口用不著。但是對(duì) STM32F1 的軟件仿真,MDK5 是支持的,在 F1 開發(fā)的時(shí)候,可以用到。

2.4 設(shè)置和取消斷點(diǎn)

我們把光標(biāo)放到 test.c 的第22行左側(cè)的灰色區(qū)域,然后按下鼠標(biāo)左鍵,即可放置一個(gè)斷點(diǎn)(紅色的實(shí)心點(diǎn),也可以通過鼠標(biāo)右鍵彈出菜單來加入),再次單擊則取消。

2.5 點(diǎn)擊run執(zhí)行到斷點(diǎn)處

2.6 查看外設(shè)信息

點(diǎn)擊菜單欄的 Peripherals→System Viewer→GPIO→GPIOF。可以看到,有很多外設(shè)可以查看,這里我們查看的是GPIOF 的情況。

單擊 GPIOF后會(huì)在 IDE 右側(cè)出現(xiàn)一個(gè)如圖

2.7 執(zhí)行完初始化

我們可以查看GPIOF 的各個(gè)寄存器設(shè)置狀態(tài),從而判斷我們寫的代碼是否有問題,只有這里的設(shè)置正確了之后,才有可能在硬件上正確的執(zhí)行。同樣這樣的方法也可以適用于很多其他外設(shè),這個(gè)讀者慢慢體會(huì)吧!這一方法不論是在排錯(cuò)還是在編寫代碼的時(shí)候,都是非常有用的。

2.8 查看棧信息

03. 附錄

6.1 【STM32】STM32系列教程匯總

網(wǎng)址:【STM32】STM32系列教程匯總

04. 聲明

該教程參考了正點(diǎn)原子的《STM32 F4 開發(fā)指南》

總結(jié)

以上是生活随笔為你收集整理的【STM32】STLINK调试程序教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。