進階使用教程(全平台通用)
Run(運行程序)和Debug(調試程序)?
選擇packs

出現STM32 STLink後,接着點回車Enter

搜索對應的芯片的Packs並選中


(RUN)將程序下載到ST-Link中
點擊RUN,然後在新彈出的窗口選擇對應的型號,比如我選擇STM32F103C8

可以看到下方的命令已經把程序燒寫進STM32了,然後STM32也正常工作了。


(DEBUG)調試程序
打上三個斷點

extern "C"
void led_task(void const * argument)
{
for(;;)
{
static int a = 5;
bsp_led.LED_Toggle(); //实例化后调用对象翻转电平函数
osDelay(500);
a++;
}
}
點擊Debug並選中型號

然後就可以進入Debug界面

點擊開始按鈕

可以看到斷點被成功命中,且可以通過左邊窗口查看a的值。

接着點擊繼續。

下一個斷點也被命中了

接着點繼續,發現a的值變為了6,符合我們程序的運行。

這樣就可以正常debug了。
VScode頭文件配置
(這只是可以更好的編輯代碼,這些頭文件並沒有被加入到編譯環境中)
C/C++插件(不推薦)
如果有這種找不到頭文件的情況,配置一下VScode的C/C++插件的Include Path即可。
但是由於該插件需要同時配置編譯器,所以可能會出一些各種各樣的小問題。
而且該插件對於大型項目會很卡,可以選擇直接看下方的clangd插件教程。



在這裏多加一行../**
除了以上這種方式,也可以通過修改c_cpp_properties.json文件進行。
輸入 "../**" (意思是將上一個目錄(工程根目錄)裏的所有文件全部加載到Include Path中)
同時建議也把ARMCLANG的include文件加入到這裏面 "/home/tungchiahui/.vcpkg/artifacts/2139c4c6/compilers.arm.armclang/6.21.0/include/"
每個人的目錄不同,但都是在用户文件夾的.vcpkg隱藏文件夾下,可以自己找找。(下方的圖不完整,請根據上訪內容進行添加)

配置好之後,我們發現代碼提示也正常了,雖然頭文件還是有可能會被VScode誤報錯説找不到,但是其實已經可以正常編譯了,也可以正常提示這些頭文件了。



Clangd插件 (非常推薦)
- 優勢:由於clangd適合大型的cmake項目,在大型項目裏表現比C/C++插件優秀太多,所以筆者與MDK6都建議用clangd的語言服務器。

現在最新版MDK6自帶clangd插件。
- Windows需要下載安裝一下LLVM (Linux一般不用管或者
sudo apt install llvm)
https://github.com/llvm/llvm-project/releases
我下載的是LLVM 18.1.8,中選擇Assets中選擇LLVM-18.1.8-win64.exe

這裏選擇這個選項Add LLVM to the system PATH for all users,其他無腦下一步即可。

可以打開terminal測試一下是否安裝成功並配置好環境。
clang -v

- 現在來安裝clangd:
按住Ctrl shift P打開搜索框
輸入clangd 找到下載語言服務器這一項目,點擊安裝clangd(請保持良好的網絡狀況)

- 接着配置clangd:
禁用C/C++的代碼提示功能

如果沒有上圖的彈窗,可以進行手動關閉,依然是ctrl shift P,輸入settings然後找到如下圖的選項

找到下圖這個選項,改成disabled即可。
"C_Cpp.intelliSenseEngine": "disabled"

新建一個settings.json文件

修改裏面的內容,該內容是 cmake產生的compile_commands.json 文件所在的路徑(路徑會隨MDK6版本更新而改變,請自己找文件所在路徑)


接着找到armclang編譯器的include目錄,也添加進來,一般在用户文件夾下的.vcpkg隱藏文件夾下。
(現在已經無需找了)

以下是Linux版本的settings.json示例
{
"clangd.arguments": [
"--compile-commands-dir=${workspaceFolder}/tmp/Template_Linux/TemplateLinux"
]
}
以下是Windows版本的settings.json示例
需要注意的是,Windows需要把盤符號變為小寫,比如C:/要改為c:/然後反斜杠\要改為斜杠/。
{
"clangd.arguments": [
"--compile-commands-dir=${workspaceFolder}/tmp/Template_Linux/TemplateLinux"
]
}
然後ctrl shift P搜索clangd找到如下圖的選項

代碼提示就正常啦

添加源文件(對應Project Items)和頭文件(對應Include Path)到編譯環境中
常規方法(修改yaml文件)
相關資料
添加源文件需要使用yaml標記語言修改cproject.yml文件。
官方為此提供了相關的更為詳細的資料文檔:https://github.com/Open-CMSIS-Pack/cmsis-toolbox/blob/main/docs/YML-Input-Format.md#source-file-management


創建文件(.c和.h)
我們這裏先在bsp中創建4個文件分別放入到Src和Inc中。


添加頭文件路徑

將頭文件所在的目錄寫入

add-path:
- ../Core/Inc
- ../Drivers/STM32F1xx_HAL_Driver/Inc
- ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy
- ../Drivers/CMSIS/Device/ST/STM32F1xx/Include
- ../Drivers/CMSIS/Include
- ../bsp/boards/Inc
- ../applications/Inc
添加源文件與分組

在這裏輸入group的名字和所需要添加的源文件路徑(這裏因為applications裏無源文件,所以我們註釋掉)

- group: bsp/boards
files:
- file: ../bsp/boards/Src/gpio_demo.cpp
- file: ../bsp/boards/Src/gpio_test.c
# - group: applications
# files:
源文件和頭文件都已經成功導入了,我們可以對文件內容進行編寫,看其是否能通過編譯。
編寫文件並編譯





可以看到日誌這幾行,顯示gpio_demo和gpio_test都成功被編譯了
[14/22] Building C object CMakeFiles/Template_Linux.dir/home/tungchiahui/user/Source/STM32_Projects/N1_F407ZGT6_GPIO_Test/bsp/boards/Src/gpio_test.o
[15/22] Building C object CMakeFiles/Template_Linux.dir/home/tungchiahui/user/Source/STM32_Projects/N1_F407ZGT6_GPIO_Test/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o
[16/22] Building CXX object CMakeFiles/Template_Linux.dir/home/tungchiahui/user/Source/STM32_Projects/N1_F407ZGT6_GPIO_Test/bsp/boards/Src/gpio_demo.o
圖形化
簡介
由於ARM團隊比較給力,短短2個月就搞出來了圖形化操作,截止3月初已經更新。
ARM團隊更新了什麼圖形化功能,下方教程就會推遲幾天更新一下對應的內容。
添加源文件

等待ARM公司更新功能中... ...