进阶使用教程(全平台通用)
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公司更新功能中... ...