使用vscode调试32单片机

个人小型纪录片:

        关键字:cmsis-dap,vscode软件调试32单片机

        应用设备:win11,stm32f103。

        使用软件:Vscode。

        目的:抛弃keil使用vscode。

        安装扩展:Crotex-Debug

        make工具链:MinGW

        编译程序工具链:gcc-arm-none-eabi。

        程序包:OpenOCD。

大量步骤与下面链接内容相同:不赘述,跳转到指导员,icon-default.png?t=N7T8https://blog.csdn.net/pyt1234567890/article/details/122522700

 一、上述链接中的makefile内容添加:

        1、添加需要编译的C文件:

######################################
# source
######################################
# C sources
C_SOURCES =  \
Core/Src/main.c \
Core/Src/main_combine.c \
Core/Src/stm32f1xx_it.c \
//添加hal需要编译的C文件
Core/Src/stm32f1xx_hal_msp.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_i2c.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rtc_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_wwdg.c 
//添加用户新增的C文件 注意反斜杠

        2、添加需要编译的H文件: 

# C includes
C_INCLUDES =  \
//最小系统头文件
-ICore/Inc \
-IDrivers/STM32F1xx_HAL_Driver/Inc \
-IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy \
-IDrivers/CMSIS/Device/ST/STM32F1xx/Include \
-IDrivers/CMSIS/Include
//用户头文件 注意反斜杠

 二、c_cpp_properties.json 文件内容

{
    "configurations": [
        {
            "name": "Win32",
            //头文件路径
            "includePath": [
                // "${workspaceFolder}/**",
                "Core/Inc",
                "Drivers/STM32F1xx_HAL_Driver/Inc",
                "Drivers/STM32F1xx_HAL_Driver/Inc/Legacy",
                "Drivers/CMSIS/Device/ST/STM32F1xx/Include",
                "Drivers/CMSIS/Include",
                "UserDrivers",
                "UserLib"
            ],
            //keil c++配置的宏定义
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "USE_HAL_DRIVER",
                "STM32F103xE"
            ],
            //编译的工具链地址
            "compilerPath": "C:\\Software_UserTool\\gcc-arm-none-eabi-10.3-2021.10\\bin\\arm-none-eabi-gcc",
            "cStandard": "c11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "windows-gcc-arm"
        }
    ],
    "version": 4
}

 三、launch.json 文件内容

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "cwd": "",
            //编译后生成的elf文件位置
            "executable": "./build/TKCMainPlusVer001.elf",
            //debug窗口的名字
            "name": "Debug with OpenOCD",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            //"cmsis-dap.cfg","stm32f1x.cfg"需要放在项目的根目录
            "configFiles": [
                "cmsis-dap.cfg",
                "stm32f1x.cfg"
            ],
            //openOCD.exe位置
            "searchDir": [
                "C:\\Software_UserTool\\OpenOCD-20231002-0.12.0\\bin",
            ],
            "runToEntryPoint": "main",
            "showDevDebugOutput": "none"

            //Debug全速运行时变量数据动态显示
            "liveWatch": {
                "enabled": true,
                "samplesPerSecond": 4
            }
        }
    ]
}

 四、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": [
                "${relativeFile}"
            ],
            "group": "build"
        },
        {
            "label": "download",
            "type": "shell",
            "command": "openocd",
            "args": [
                "-f",
                "cmsis-dap.cfg",
                "-f",
                "stm32f1x.cfg",
                "-c",
                "program build/TKCMainPlusVer001.elf verify reset exit"
            ],
            "group": "build"
        }
    ]
}

五、查看Debug全速运行时,变量的动态数据:

         1、Debug窗口,CORTEX LIVE WATCH选项栏激活:

                setting.json添加内容:

"cortex-debug.liveWatchRefreshRate": 250,
//填写自己存放的路径
"cortex-debug.armToolchainPath": "C:/Software_UserTool/gcc-arm-none-eabi-10.3-2021.10/bin",

                launch.json添加内容:

"liveWatch": {
     "enabled": true,
     "samplesPerSecond": 4
}

         2、监视窗口变量查看操作

注意事项:

        1、debug时出现找不到文件,文件路径乱码,删掉build文件夹从新make,再进debug就好了,debug找的文件路径信息估计是从.o文件找的。因为旧文件不会被make,所以.o文件也是旧的,当修改项目名字,就会发生这种情况。

        2、make时出现make: Nothing to be done for 'all'.是因为程序未改动,所以才出现这种情况,如果改动程序的其中一个c或h文件,make将会输出编译的信息。修改项目名字时注意删掉builde文件夹再make一遍。

        3、vcpkg不需要安装。

        4、cmake不需要安装。

        5、clangd不需要安装,太高级了不好使。

        6、debug外设全速时不刷新,原因是全速时Crotex-Debug没有查外设地址,并且数据和SVD扩展没有联动。解决办法是使用Live Watch的指针间接寻址查看状态。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
如果您使用 VS Code 调试单片机程序,可以通过 VS Code 的 Debug 模式来实现添加变量监视。具体步骤如下: 1. 首先,需要在 VS Code 中添加一个调试配置。在 VS Code 的左侧菜单栏中点击 Debug 图标,然后点击“create a launch.json file”按钮,选择您使用的编译器和单片机类型,并按照提示进行配置。 2. 然后,需要在 .vscode/launch.json 文件中添加变量监视。在“configurations”数组中找到您的调试配置,然后添加一个“watch”属性。例如: ``` "configurations": [ { "name": "Debug STM32", "type": "cortex-debug", "request": "launch", "cwd": "${workspaceFolder}", "executable": "./build/stm32.elf", "servertype": "openocd", "configFiles": [ "interface/stlink.cfg", "target/stm32.cfg" ], "watch": [ { "expression": "&(TIM2->CNT)", "type": "uint32_t", "format": "hex" } ] } ] ``` 在上面的例子中,我们添加了一个名为“TIM2->CNT”的变量监视,它的地址是“&(TIM2->CNT)”(即 TIM2 计数器的地址),它的数据类型是“uint32_t”,显示格式是“hex”。 3. 最后,启动调试器,并在调试器的界面中打开变量监视窗口。在 VS Code 中按下 F5 启动调试器,然后在调试器的界面中找到“Watch”或“Variables”窗口,可以看到我们添加的变量监视。 需要注意的是,添加变量监视需要您对单片机的程序有一定的了解和理解,需要知道程序中哪些变量是需要监视的,以及它们的地址和数据类型。另外,不同的编译器和单片机类型可能会有不同的调试配置和变量监视方式,具体要根据您使用的工具进行调整。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式小学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值