本篇博文尝试搭建 stm32g474 的开发环境
一. 工具安装
1. 关于 MinGW、OpenOCD、Zadig 这些工具的下载和安装见 Jlink+OpenOCD+STM32 Vscode 下载和调试环境搭建_vscode openocd stm32 jlink-CSDN博客
2. 导出一个 STM32 的 CMAKE 工程,这里略过。
3. 安装 ninja Ninja, a small build system with a focus on speed (ninja-build.org)。
4. 安装 CMAKE Download CMake。
在环境变量中包含以下路径:
二. 编译
安装所以以上工具就可以进行 STM32 CAMKE 工具的编译。
但是生成的 download 文件只有 elf 格式,在工程最外层的 CMakeLists.txt 中加入
add_custom_command( TARGET ${EXECUTABLE_NAME} moto_control POST_BUILD
COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_NAME} moto_control.elf ${PROJECT_NAME}.hex
COMMAND ${CMAKE_OBJCOPY} -O binary ${EXECUTABLE_NAME} moto_control.elf ${PROJECT_NAME}.bin )
其中 moto_control 是工程名。
在 TERMINAL 中执行
cmake . -G "Unix Makefiles"
可生成 Makefile 文件
通过
make -j4
可以达到 ninja 同样的编译效果。
或者通过
make -j4 2>&1|tee xxx.log
可以把 log 输出到 xxx.log 文件
通过
make clean
cd build/Debug
ninja clean
可以实现编译的清除。
三. 调试
通过建立 launch.json 实现 Debug。
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"cwd": "${workspaceRoot}","executable": "./build/moto_control.elf","name": "Debug Microcontroller","request": "launch","type": "cortex-debug","showDevDebugOutput": false,"servertype": "openocd","configFiles": ["E:/Project/tools/OpenOCD-20231002-0.12.0/share/openocd/scripts/interface/jlink_swd.cfg","E:/Project/tools/OpenOCD-20231002-0.12.0/share/openocd/scripts/target/stm32g4x.cfg"]}]
}
四. 下载
通过建立 task 的方式完成
在 .vscode 文件夹下建立 tasks.json
{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "make","args": [],"group": "build"},{"label": "download","type": "shell","command": "openocd","args": ["-f","E:/Project/tools/OpenOCD-20231002-0.12.0/share/openocd/scripts/interface/jlink_swd.cfg","-f","E:/Project/tools/OpenOCD-20231002-0.12.0/share/openocd/scripts/target/stm32g4x.cfg","-c","program build/moto_control.elf verify reset exit"],"group": "build","problemMatcher": []}]
}
通过 TERMINAL 出的 Run Task... 在搜索框出现 download 任务,点击后即可下载。