当前位置:首页 > 网络技术 > Win技巧 > 正文内容

VSCode搭建STM32开发环境

admin2年前 (2023-02-28)Win技巧510



    玩过单片机的都知道,Keil是一款收费软件,虽然有相应的方法可以正常使用,但还是少不了很多麻烦,并且keil的界面对于我们开发者来说非常不友好。那么这时VSCode的出现就很好的解决了这一问题。今天我们就来使用VSCode搭建STM32的开发环境。

 

工具下载及环境配置


1、STM32CubeMX, ST官方的初始化代码生成工具

2、Visual Studio Code,代码编辑器

3、MingGW,gcc,主要用于make

4、GNU Arm Embedded Toolchain,交叉编译工具链

5、OpenOCD,烧录工具

其中MingGW,GNU Arm Embedded Toolchain,openocd需要将其解压后的bin目录添加要path环境变量

MingGW中需要进入到x:\mingw64\bin目录下(x代表解压后的存放盘符),将mingw32-make.exe复制一份,修改为make.exe

添加完成后通过命令行测试是否成功



make -v

arm-none-eabi-gcc -v

openocd -v



如配置正确,将会得到相应的版本信息。


VSCode插件安装

1、C/C++ Extension Pack

2、Cortex-Debug

3、One Dark Pro(主题插件)

4、vscode-icons(文件图标插件)

5、Rainbow Brackets(彩虹括号插件)

其中前两个为必须安装,后三个强烈建议,但可不用


使用STM32CubeMX生成初始化代码

在Project Manager中的Toolchain/IDE选择Makefile(如下图),其余时钟外设等该怎么配置就怎么配置,配置好后点GENERATE CODE 生成。


使用VSCode开发

生成后使用VSCode打开文件夹,文件如下

    这时我们打开Makefile,可以看到宏定义,以及头文件和源文件

    我们随机打开一个.c文件,可以看到有非常多波浪线的错误提示,虽然不影响编译,但是看着总是有点不舒服,只是因为VSCode不知去哪里索引。这时我们按下ctrl+shift+p快捷键,输入 c/c++自动弹出

    我们点击编辑配置(JSON),会在.vscode下自动创建一个c_cpp_properties.json文件,将Makefile中的两个宏定义添加到c_cpp_properties.json文件的defines处,删去前面的-D,同时核对自己的compilerPath路径是否正确,此为MinGW的gcc路径,最后修改后的如下所示

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "USE_HAL_DRIVER",
                "STM32L475xx"
            ],
            "windowsSdkVersion": "10.0.19041.0",
            "compilerPath": "D:/mingw64/bin/gcc.exe",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-arm",
            "configurationProvider": "ms-vscode.makefile-tools"
        }
    ],
    "version": 4
}

    之后打开终端,输入make即可编译,成功生成bin和hex文件,如果觉得输出的信息太乱,可以设置为静默编译,修改Makefile文件,在命令前加@,同时echo当前编译的文件


$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR) 
  @echo "build $<"
  @$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@

$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
  @echo "build $<"
  @$(AS) -c $(CFLAGS) $< -o $@

$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
  @echo "build $<"
  @$(CC) $(OBJECTS) $(LDFLAGS) -o $@
  $(SZ) $@


    最后的效果如下图所示


    由于window并不支持-rm -fR命令,所以需要将Makefile文件中的clean命令做相应修改

clean:
  del /Q $(BUILD_DIR)


    之后我们可以通过命令make clean测试一下,发现成功删除编译生成的文件。


使用openocd烧写代码

    目录openocd-20211118\OpenOCD-20211118-0.11.0\share\openocd\scripts\interface 下载器的配置文件

    目录openocd-20211118\OpenOCD-20211118-0.11.0\share\openocd\scripts\target 芯片的配置文件

    在以上两个目录中找到你所使用的烧写器的配置文件和芯片配置文件,我使用的是stlinkv2和stm32l475

    将他们复制到你的工程目录下

    在前面的编译中,敲命令的方式多少有点繁琐,所以我们将其添加为一个任务,通过点击这个任务按钮完成编译及下载等操作。

    在VSCode中的终端->运行任务->添加配置任务->使用模板创建tasks.json文件->others,编辑tasks.json文件

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "make",
            "args": [
            ],
            "group": "build"
        },
        {
            "label": "download",
            "type": "shell",
            "command": "openocd",
            "args": [
                "-f",
                "stlink-v2.cfg",
                "-f",
                "stm32l4x.cfg",
                "-c",
                "program build/Test_L475.elf verify reset exit"
            ],
            "group": "build"
        }
    ]
}


    之后可以在终端->运行任务中多出build和download两个选项,点击即可相应的构建及下载代码。


配置单步调试

    在最左侧的debug标签点击创建launch.json文件,选择Cortex Debug会生成一个初始模板。

    点击添加配置,选择Cortex Debug:OPENOCD会自动添加一个代码修改模板,对它的参数进行修改。


{
    "version": "0.2.0",
    "configurations": [
        {
            "cwd": "${workspaceRoot}",
            "executable": "./build/Test_L475.elf",
            "name": "Debug with OpenOCD",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "configFiles": [
                "stlink-v2.cfg",
                "stm32l4x.cfg"
            ],
            "showDevDebugOutput": "none"
            // "svdFile": "./STM32L4x5.svd"     //此为片上外设寄存器文件,可不添加
        }
    ]
}


    配置完后,设置断点,按F5进入调试模式,即可调试自己的程序。

    完成以上所有配置后,即可完全摆脱keil,使用VSCode开发STM32


注意事项

    在gcc里面重定向用的不是fputc,重定向函数为


int _write(int file, char *ptr, int len)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)ptr, len, 0xFFFF);
  return len;
}


    添加后即可使用串口打印


扫描二维码推送至手机访问。

版权声明:本文由梦魁网络资源站发布,如需转载请注明出处。

本文链接:https://family.monkui.com:39/?id=1017

分享给朋友:

相关文章

Win10笔记本电脑如何变身WiFi热点

Win10笔记本电脑如何变身WiFi热点

笔记本电脑都是具有移动WiFi上网功能的,那么win10系统还可以将电脑作为热点,分享给其他移动设备,最多8台。下面就来说说如何操作:1、首先点击“windows”标志,即常说的“开始”,然后点“设置”,然后选择“网络和Internet”,...

2023年最新最全 VSCode 插件推荐!

2023年最新最全 VSCode 插件推荐!

Visual Studio Code 是由微软开发的一款免费的、针对于编写现代Web和云应用的跨平台源代码编辑器。它包含了一个丰富的插件市场,提供了很多实用的插件。下面就来分享 2023 年前端必备的 VS Code 插件!前端框架ES7+...

【网盘聚合神器】支持百度(不限速)、阿里、天翼、迅雷、蓝奏、谷歌等29款网盘

【网盘聚合神器】支持百度(不限速)、阿里、天翼、迅雷、蓝奏、谷歌等29款网盘

  百度网盘的限速可能会让你转战阿里云盘,但是阿里云盘的缺点在于不能分享,网络上的资源都是通过各类网盘来分享的,这样就会让你可能同时拥有不同网盘的账号。  那么我们有没有一款工具,可以将这些网盘资源聚合一下,把所有的网盘都挂载在电脑上,当做...

七天入门C#上位机——第六天:如何打包软件制作安装包

七天入门C#上位机——第六天:如何打包软件制作安装包

C#编写好程序后需要进行程序打包,个人觉得C#自带程序打包工具使用复杂,这里推荐一个好用的程序打包工具Inno Setup,Inno setup是一个免费、开源、简单的打包软件。这个软件足够简单,一分钟就完成打包。这个软件也足够强大,你想实...

七天入门C#上位机——第七天:能远程升级打补丁你说香不香

七天入门C#上位机——第七天:能远程升级打补丁你说香不香

对于一个优秀的PC桌面应用程序而言,自动升级功能是必不可少的,目前应用程序主流的自动升级策略是重新下载安装包安装整个客户端,这种方法简单易用,但缺点也很明显,比如,即使整个客户端有10G,而本次更新仅仅只是修改了一个1k大小的dll,那意味...

七天入门C#上位机——第四天:动态库大乱斗

七天入门C#上位机——第四天:动态库大乱斗

有句古话叫工欲善其事必先利其器,意思就是想要做好一件事情,必须要先磨炼好工具,有了好的工具才能够做到事半功倍的效果;开发上位机也是这样,要想把上位机项目做的既好又高效,好的工具是必不可少的,下面介绍上位机开发中常见的几个模块中用到的动态库工...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。