stm32cubeMX+vscode开发编译调试stm32程序

stm32单片机的开发使用哪个IDE比较好呢,这是这两年开发stm32程序以来一直在探索的。

一开始刚刚进入机器人队,学长教我们的是stm32库函数+keil开发程序,然后玩了一年的MDK,发现不怎么好用,而且keil没法跨平台啊,自己用linux开发单片机程序也想有IDE啊,纯vim+交叉编译工具链问题在于make难写啊,自己学make又记不住,vim也玩得不怎么好,,后来队友教下一届的用iar,,,试用了一下发现,代码补全还没keil来的好,怒弃,这个时候队里使用的底层已经转变成HAL库了,st公司也出了STM32cubeMX,底层配置只要点点点就可以了,点击生成代码就可以生成各家IDE的工程。

我在之前用vscode就发现vscode真不愧是宇宙最强编辑器,所以就开始用vscode写单片机代码,用iar下载和调试。前两天就在想,既然都用vscode写代码了,那直接用它下载调试不就行了,而且有stm32cubeMX,makefile可以自动生成,跨平台开发也实现了,经过一番探索,我成功实现了windows平台下在vscode编写和调试单片机代码,现记录如下。

安装vscode

正常安装vscode即可,不再赘述。

安装make工具

Windows系统没有make工具,需要下载mingw,mingw-w64-install.exe,安装好后将其bin目录加入到环境变量中

mingw环境变量

这个时候在命令行里输入make -v发现还是找不到命令,这是怎么回事呢,原来是由于mingw中的make不叫make,打开mingw的bin目录将mingw32-make复制一份改名成make就可以了。

make重命名

make

安装交叉编译工具链

我们要安装的是ARM GCC Toolchain (https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads)

安装好后添加环境变量,在命令行中验证:
arm-none-eabi-gcc -vgcc验证

安装openocd

openocd(http://gnutoolchains.com/arm-eabi/openocd/)是开源调试软件,连接仿真器后可以开GDB服务。

下载完之后是个压缩包,解压到安装位置后添加环境变量

命令行中验证

openocd验证

安装clang llvm

安装clang主要是为vscode提供语法补全代码格式化等功能,安装好后添加环境变量

环境变量总结

生成并编译代码

在STM32CubeMX中配置好工程后选择makefile类型,然后生成代码。

在文件夹下命令行运行make就可以编译生成可以下载的二进制代码了。

配置vscode

安装插件

需要安装c/c++、ARM、Cortex-dubug,ARM插件用于格式化ARM汇编代码,Cortex-debug插件用于简化调试配置文件

vscode插件

配置文件

用vscode打开工程文件夹,然后保存为工作区,在工程文件夹下新建文件.vscode\c_cpp_properties.json和.vscode\launch.json。

c_cpp_properties.json

.vscode\c_cpp_properties.json是用于对C/C++语言的语法提示等的配置,其中include路径和宏定义可以参照makefile添加。

{
    "configurations": [
        {
            "name": "npc",
            "includePath": [
                "${workspaceFolder}/**",
                "D:/GNU Tools ARM Embedded/5.4 2016q3/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "USE_HAL_DRIVER",
                "STM32F103xB"
            ],
            "cStandard": "c99",
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "${workspaceRoot}",
                    "${workspaceRoot}/Inc",
                    "${workspaceRoot}/Drivers/STM32F4xx_HAL_Driver/Inc",
                    "${workspaceRoot}/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
                    "${workspaceRoot}/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F",
                    "${workspaceRoot}/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS",
                    "${workspaceRoot}/Middlewares/Third_Party/FreeRTOS/Source/include",
                    "${workspaceRoot}/Drivers/CMSIS/Include",
                    "D:/GNU Tools ARM Embedded/5.4 2016q3/arm-none-eabi/include",
                    "D:/GNU Tools ARM Embedded/5.4 2016q3/arm-none-eabi/include/c++/5.4.1",
                    "D:/GNU Tools ARM Embedded/5.4 2016q3/arm-none-eabi/include/c++/5.4.1/arm-none-eabi/thumb/v7-m",
                    "D:/GNU Tools ARM Embedded/5.4 2016q3/arm-none-eabi/include/c++/5.4.1/backward",
                    "D:/GNU Tools ARM Embedded/5.4 2016q3/arm-none-eabi/include/sys",
                    "D:/GNU Tools ARM Embedded/5.4 2016q3/lib/gcc/arm-none-eabi/5.4.1/include",
                    "D:/GNU Tools ARM Embedded/5.4 2016q3/lib/gcc/arm-none-eabi/5.4.1/include-fixed"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        }
    ],
    "version": 4
}
launch.json

这个文件主要是对调试任务进行配置,可以参考cortex-debug的官网完成。

{
    "trace": true,
    "configurations": [
        {
            "cwd": "${workspaceRoot}",
            "executable": "./build/npc.elf",
            "name": "Debug stm32",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "device": "STM32F103C8",
            "configFiles": [
                "./stm32f103c8.cfg"
            ],
            "svdFile": "./STM32F103.svd"
        }
    ]
}

文件中需要配置的地方有"executable": “./build/npc.elf”,改为刚刚编译成功的可执行文件

device改为自己芯片的类型

openocd连接单片机需要配置文件配置一下,就是"configFiles": ["./stm32f103c8.cfg"],在工程根目录下新建一个配置文件

source [find interface/jlink.cfg]

#transport select hla_swd
transport select swd

#set WORKAREASIZE 0x4000
source [find target/stm32f1x.cfg]

还有一个就是svdFile,用于描述芯片外设的,配置后在调试时可以读取外设的寄存器,这个在网上找一下然后将相应类型的文件配置一下就可以。

下载和调试代码

在调试之前,需要一个叫做UsbDriverTool的工具,将下载器的驱动改为libusb,否则openocd无法连接到jlink

libusb

配置好launch.json后,在vscode的调试界面就可以看到刚刚配置的debug,点击运行,就可以进行调试了

vscode调试

  • 9
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: VSCodeSTM32CubeMX是两个不同的工具,可以结合使用来进行STM32开发VSCode是一款轻量级的代码编辑器,支持多种编程语言和插件扩展,可以通过安装插件来实现对STM32开发的支持。例如,安装C/C++插件和ARM插件可以实现对STM32编译调试和烧录等功能。 STM32CubeMX是一款图形化的STM32配置工具,可以帮助开发者快速生成STM32项目的代码框架和初始化代码。可以通过生成代码框架和初始化代码来快速开发STM32应用程序。 在使用VSCodeSTM32CubeMX进行STM32开发时,可以先使用STM32CubeMX生成项目代码框架和初始化代码,然后在VSCode中进行代码编写、编译调试和烧录等操作。通过结合使用这两个工具,可以提高STM32开发的效率和质量。 ### 回答2: VSCodeSTM32CubeMX均是非常实用的开发工具,都有着自己的优点和适用场景。 首先,VSCode作为一款轻量级、高效率的文本编辑器,具有开源、跨平台的优点,适用于各种程序开发的需求,特别是针对C++语言的开发有非常出色的支持,拥有各种功能丰富的插件以及可自定义的配置,使得程序开发更加便捷。 而STM32CubeMX是一款用于STM32系列芯片开发的可视化工具,其可以非常方便地进行代码生成、硬件配置等操作,快速搭建起STM32芯片的开发环境。同时,STM32CubeMX还具有各种功能模块(如对PWM、ADC等的支持),方便用户开发新的项目。 那么,VSCodeSTM32CubeMX结合起来,就可以带来更加高效、便捷的开发体验了。 一方面,VSCode支持各种编程语言的开发,并且作为一个优秀的编辑器,体验也更加流畅。用户可以用VSCode进行STM32CubeMX生成代码开发编译等工作,并同时可以使用丰富的VSCode插件(如Git、IntelliSense等)帮助自己更加高效地开发项目。 另一方面,STM32CubeMX则可以帮助用户极大地降低STM32开发的门槛。通过鼠标点选,硬件配置、代码生成过程可以被轻松地完成,还可以轻松添加和删除硬件功能模块进入项目。在整个开发流程中,STM32CubeMX可以帮助用户大大减少了编码的时间以及代码调试的难度,从而使得整个开发流程更加高效。 总的来说,VSCodeSTM32CubeMXSTM32程序开发中都有着各自独特的优势和作用,搭配使用更是能够带来事半功倍的效果。 ### 回答3: 在进行STM32开发时,选择合适的开发工具和方式是非常重要的。VSCodeSTM32CubeMX都是非常受欢迎的开发工具,但是它们各自有着不同的优势和特点。 VSCode是一款由微软开发的轻量级开源编辑器,它可以支持多种编程语言,包括C/C++。VSCode的优势在于其丰富的插件生态系统和高度的可扩展性。VSCode可以通过安装不同的插件来提升其对不同开发环境的支持,例如C++插件可以提供代码补全、文本高亮、调试工具等功能。同时,VSCode也可以通过自定义设置来满足不同开发者的需求。因此,VSCode是非常适合那些喜欢自定义配置和寻求高度可扩展性的开发者。 STM32CubeMX是一个工具,可帮助快速配置嵌入式应用程序的外设和代码框架。它提供了一种图形化的用户界面,允许用户轻松选择和配置不同的外设。这极大地简化了嵌入式系统开发的流程,使开发者可以更专注于软件开发。使用STM32CubeMX还可以自动生成C代码,包括启动文件、中断处理程序、外设驱动程序等。这些代码框架可以帮助开发者快速启动项目,并提高代码的质量和可读性。 综上所述,VSCodeSTM32CubeMX都有其优点,开发者需要根据具体开发需求和个人偏好来选择适合自己的工具。如果需要高度可扩展性和自定义设置,可以选择VSCode;如果需要快速配置外设并自动生成C代码,可以选择STM32CubeMX。同时,它们也可以结合使用,以实现更高效的开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值