VS code+openocd+make+gcc開發stm32

一、下載軟件:

1、VS code;VS cpde安裝的時候直接添加到path,如圖所示:

安裝完成後,該軟件的商店中安裝,如圖插件(chinese那個也可以安裝,安裝之後VS code就是中文界面):

2、openocd(open on-chip debugger),下載後解壓,然後將openocd-0.10.0文件夾下級中的bin和bin-x64兩個文件的完整目錄添加到電腦的環境變量中(右鍵”我的電腦-屬性-高級系統設置-環境變量-用戶變量的path中“);

3、make,下載解壓後將bin中的mingw32-make.exe重命名爲make.exe;然後和openocd一樣將make.exe所在完整目錄添加到環境變量中;

4、gcc(GNU Arm Embedded Toolchain(arm-none-eabi))編譯器,這是個.exe文件,安裝完成後,和上面兩個一樣將bin文件夾的完整路徑添加到環境變量中;

5、STM32CubeMX,這個軟件要依賴java環境,所以需要先安裝java,就是常規軟件的安裝方法;

6、ST_Link的驅動(有就不用裝了),在設備管理器中查看(插上ST-Link的時候);

相關軟件分享:鏈接:https://pan.baidu.com/s/1OPb0iyK2fjoHdiY8G01QKw 
提取碼:7ekh 

測試工程文件分享,使用原子哥的戰艦板:鏈接:https://pan.baidu.com/s/1ioV6c4V9eFThxCDVkuycCQ 
提取碼:trfn
qq:1513781014

二、驗證是否安裝成功以及環境變量添加成功

make -v

openocd -v

arm-none-eabi-gcc -v

如果成功了,如下所示:

三、配置

1、STM32CubeMX生成makefile的工程,這個不做介紹(可以使用我的工程)

2、配置VS code:

1)打開VS code,然後打開工程文件夾,然後文件-首選項-設置-在搜索框輸入:intelli sense mode,在下拉選項中選中gcc-arm,指定intellisensemode的默認值;

2)選中工程文件的文件,然後按F1(ctrl+shift+p),輸入編輯配置UI;a、在定義欄中添加:__CC_ARM(不添加這個也沒有問題)、USE_HAL_DRIVER、STM32103xE(後面兩個在makefile文件中大約102行中,但是多加了-D,如果複製別忘了刪除-D),添加完按ctrl+s保存,不然相當於沒有添加;b、添加頭文件路徑,在包含路徑中,每個用到的.h文件的路徑,包括自己編寫的,ctrl+s;同時makefile中的C_INCLUDE(大約在112行)也要添加,按照已有格式添加其中每個 \  後面不能有空格、makefile文件中代碼前面有的空白的話,它是製表符(Tab)而不是空格,Ctrs+s;c、編譯器路徑選擇,剛剛修改的make的路徑中的gcc.exe(如果解壓在c盤就是C:/mingw64/bin/gcc.exe)

3、重啓vs code打開工程文件夾,可以簡單測試一下代碼提示,以及語法檢查是否正常,如果不能提示就在設置界面搜索prevent,然後取消勾選;可以在下方終端(在工程文件夾)輸入make,看一下是否能編譯輸出.hex、.elf、.bin等文件,如果不能編譯檢查步驟2中的c中編譯器路徑;使用st-link連接單片機和電腦,然後在終端中輸入openocd,如果出現如下,則證明與單片機通訊成功:

4、調試配置:

1)可以在工程文件下新建一個openocd.cfg,同時在其中添加source [find interface/stlink-v2.cfg](表示使用st-link),
source [find target/stm32f1x.cfg](表示是f1系列芯片),不新建也可以;

2)點擊VS code左側的運行圖標;

3)點擊創建launch.json,然後在彈出創建窗口選擇Cortex-Debug,將launch.json配置成如下圖所示:

5、配置到此可以使用make命令編譯工程了,當然也可以調試了,但是沒有調試結束後需要手動復位,不能自動復位,也不具備一鍵下載,和編譯;實現一鍵編譯、一鍵下載,調試前自動編譯、調試後自動復位:a、在makefile文件的最後新建兩個任務update(實現燒錄)、reset(實現復位),如果之前沒有新建openocd.cfg就是用#屏蔽update後面的兩行,並將其下面的兩行取消屏蔽,其代碼如下圖所示:

update:

    openocd -f openocd.cfg -c init -c halt \

    -c "program $(BUILD_DIR)/$(TARGET).hex verify reset exit"

其中openocd -f openocd.cfg相當於打開,init爲初始化,halt爲掛起,爲了燒錄做準備,(每個 \  後面不能有空格、makefile文件中代碼前面有的空白的話,它是製表符(Tab)而不是空格),program爲燒錄命令,vreify爲燒錄後驗證,這個可以參考openocd的手冊,FLASH Programming,配置完成後ctrl+s保存;b、按F1,輸入配置任務選擇gcc.exe build active file,打開tasks.json後配置成如下圖所示:

 

{

    "version": "2.0.0",

    "tasks": [

        {

            "type": "shell",

            "label": "Build",

            "command": "make",

 

            "problemMatcher": [

                "$gcc"

            ],

            "group": "build"

        },

        {

            "type": "shell",

            "label": "Update",

            "command": "make;make update",

 

            "problemMatcher": [

                "$gcc"

            ],

            "group": "build"

        },

        {

            "type": "shell",

            "label": "Reset",

            "command": "make reset",

 

            "problemMatcher": [

                "$gcc"

            ],

            "group": "build"

        }

    ]

}

 

上圖中的command的make;make update 代表先執行編譯,再執行makefile中的update;make reset就是makefile中的reset命令;c、爲了然後每次調試都自動編譯、自動復位,在launch.json添加最後兩行代碼如步驟4的3)所示;

6、在VS code的菜單欄點擊終端-運行任務就會看到Build、Update、Reset(分別爲編譯,編譯後燒錄,重啓);

結束語:

感謝網上大神上傳的方法,基本學習https://www.bilibili.com/read/cv6165143/這位大神,添加了自己在這個過程踩過的坑,希望大家能多多分享,謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章