## vscode 项目改造 ***### .vscode 目录*** 设置智能感知 ctrl+shift+P打开Command Palette,运行C/Cpp: Edit configurations... c_cpp_properties.json ```json { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ], "defines": [ "_DUSE_HAL_DRIVER", "_DSTM32F103xE", "_DEBUG", "UNICODE", "_UNICODE" ], "compilerPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/arm-none-eabi-gcc.exe", "cStandard": "c99", "cppStandard": "c++11", "intelliSenseMode": "windows-gcc-x64", "configurationProvider": "ms-vscode.makefile-tools" } ], "version": 4 } ``` settings.json ```json ``` launch.json 需要对应的 svd文件调试 ```json { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "cwd": "${workspaceFolder}", "executable": "${workspaceRoot}/build/${workspaceFolderBasename}.elf", "name": "Debug with ST-Link", "request": "launch", "type": "cortex-debug", "runToEntryPoint": "main", "showDevDebugOutput": "none", "servertype": "openocd", "configFiles": ["${workspaceRoot}/openocd_script/openocd_stlink_stm32f4.cfg"], "preLaunchTask": "build", "armToolchainPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/", "svdFile": "${workspaceRoot}/cmsis-svd/data/STMicro/STM32F407.svd" }, { "cwd": "${workspaceFolder}", "executable": "${workspaceRoot}/build/${workspaceFolderBasename}.elf", "name": "Debug with ST-Link Not Build", "request": "launch", "type": "cortex-debug", "runToEntryPoint": "main", "showDevDebugOutput": "none", "servertype": "openocd", "configFiles": ["${workspaceRoot}/openocd_script/openocd_stlink_stm32f4.cfg"], "preLaunchTask": "", "armToolchainPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/", "svdFile": "${workspaceRoot}/cmsis-svd/data/STMicro/STM32F407.svd" }, { "cwd": "${workspaceFolder}", "executable": "${workspaceRoot}/build/${workspaceFolderBasename}.elf", "name": "Attach ST-Link Not Build", "request": "attach", "type": "cortex-debug", "runToEntryPoint": "main", "showDevDebugOutput": "none", "servertype": "openocd", "configFiles": ["${workspaceRoot}/openocd_script/openocd_stlink_stm32f4.cfg"], "preLaunchTask": "", "armToolchainPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/", "svdFile": "${workspaceRoot}/cmsis-svd/data/STMicro/STM32F407.svd" } ] } ``` tasks.json ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "make", "args": [ ] } ] } ``` ### 修改时钟 tick Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_hal.c ### makefile #### 下载 openocd -v 测试 添加文件 openocd_script/openocd_stlink_stm32f1.cfg ```ini source [find interface/stlink.cfg] source [find target/stm32f1x.cfg] ``` openocd_script/openocd_stlink_stm32f4.cfg ```ini source [find interface/stlink.cfg] source [find target/stm32f4x.cfg] init tpiu config internal - uart off 168000000 itm ports on ``` stlink.cfg 可改为 stlink-v2.cfg makefile 添加 upload: @openocd -f openocd_script/openocd_stlink_stm32f1.cfg -c init -c halt -c "flash write_image erase $(BUILD_DIR)/$(TARGET).bin 0x08000000" -c reset -c shutdown @openocd -f openocd_script/openocd_stlink_stm32f1.cfg -c init -c halt -c "flash write_image erase $(BUILD_DIR)/$(TARGET).bin 0x08000000" -c reset -c shutdown @openocd -f openocd_script/openocd_stlink_stm32f1.cfg -c init -c halt -c "program $(BUILD_DIR)/$(TARGET).bin exit 0x08000000" @openocd -f openocd_script/openocd_stlink_stm32f1.cfg -c init -c halt -c "program $(BUILD_DIR)/$(TARGET).elf verify reset exit" ### 调试 coretex debug插件 Cortex-Debug: Device Support Pack - STM32F1 Cortex-Debug: Device Support Pack - STM32F4 arm-none-eabi-gdb.exe: warning: Couldn't determine a path for the index cache directory. 添加系统变量 HOME C:\users\esea6 ST-LINK_gdbserver.exe 必须在系统路径下 ### LED点亮 通过 HAL_GPIO_TogglePin 直接操作 也可以 重写函数 LED_Toggle() 这样语义更清晰 HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5); HAL_Delay() ### FAQ 1. 编译后,串口输出中文乱码 -fexec-charset=GBK -finput-charset=UTF-8