STM32开发之 VSCode+gcc环境编译

一、程序安装

1、VSCode:https://code.visualstudio.com/Download

好用到爆的文本编辑器,配合强大的插件,使你的开发效率大大提高。

2、Java:https://www.java.com/zh-CN/download/

STM32CubeMX的安装需要 JAVA运行环境(jre)。

3、STM32CubeMX:https://my.st.com/content/my_st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html

支持最新的 HAL库及 LL库,工程代码配置与生成工具,支持生成 IAR、Keil、STM32CubeIDE、Makefile等工程,这里使用其生成的 Makefile工程。

4、MinGW-w64:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/

一个强大并实用的 C/C++ 编译器。安装完成后需要添加系统环境变量,可以利用 cmd命令:gcc -v测试。

5、arm-none-eabi-gcc:https://launchpad.net/gcc-arm-embedded/+download

GUN的 arm的通用交叉编译链工具,基本上常用的 arm处理器均支持。同样的,安装完成后需要添加系统环境变量,可以利用 cmd命令:arm-none-eabi-gcc -v测试。

二、CubeMX工程生成

目前 STM32现在主推的库是 HAL库,当然还有个 LL库用于操作底层寄存器;对于 HAL库,官方专门推出了图形化软件 CubeMX来简化 HAL库下 STM32的初始化代码;我们只需要配置好相应的外设功能以及时钟树,点击生成代码,CubeMX便会生成相应工程文件,并且还支持多种 IDE工具,实乃居家旅行出门必备啊。咳,偏题!

首先,选择你的目标芯片,启动工程配置,这里就简单的弄个 LED控制跟 DEBUG配置。

串口配置就像下图那样,像我们平常一样,异步通讯,Baud rate:115200、8Bit、1Stop Bit

2.png (130.71 KB, 下载次数: 5)

2020-10-10 10:13 上传接着就配置 LED IO引脚,直接点击对应引脚进行配置,如下图所示:

3.png (153.79 KB, 下载次数: 4)

2020-10-10 10:13 上传这软件怎么用在这里就不多赘述了,还有就是稍微注意一下:

如果要使用 STLink等在线调试器,那么需要在下图的指示处选择你所需要调试方式:

4.png (191.6 KB, 下载次数: 3)

2020-10-10 10:13 上传对于时钟树,像我们一般是有使用 HSE高速外部晶振,那么你就需要在 RCC那里打开相应的配置:

5.png (195.44 KB, 下载次数: 3)

2020-10-10 10:13 上传接着在时钟配置那里配置相应的外设时钟:

6.png (138.62 KB, 下载次数: 1)

2020-10-10 10:13 上传最后,由于我们是想要在 VSCode上开发,就直接选择生成 Makefile就可以了。需要特别说明的是,这一步并不是必须的,完全可以不用 CubeMX,自己写 Makefile也是可以的。然后输出生成工程文件。

7.png (110.26 KB, 下载次数: 5)

2020-10-10 10:13 上传三、VSCode环境部署

1、插件安装

8.png (66.89 KB, 下载次数: 2)

2020-10-10 10:13 上传2、配置 VS Code

首先,把从 STM32CubeMX创建出来的工程导入到 VS Code里面,得到:

9.png (163.14 KB, 下载次数: 2)

2020-10-10 10:13 上传默认情况下,工程中是不含 .vscode 的文件夹的,通过操作以下三种方式时会自动创建:

打开命令窗口进行编辑配置(Ctrl+Shitf+P > Edit Configurations(JSON))

10.png (36.1 KB, 下载次数: 3)

2020-10-10 10:13 上传或点击窗口栏的 终端 -> 配置任务 -> 使用模板创建 task.json -> Other

11.png (50.31 KB, 下载次数: 3)

2020-10-10 10:13 上传或修改工作区里的 settings.json文件(窗口File--Preferences--Settings--Features--Terminal 的 Terminal > Integrated > Automation Shell: Windows栏中进行编辑)

12.png (62.27 KB, 下载次数: 4)

2020-10-10 10:13 上传这三个创建出来的效果如下:

13.png (44.6 KB, 下载次数: 3)

2020-10-10 10:13 上传先说前面两个文件:

c_cpp_properties.json

主要有添加 include路径,编译器路径,宏定义等;设置好后,索引、编译就跟 keil一样方便。然后,它的配置修改如下:

{

"configurations": [

{

"name": "STM32",// 创建一个名为"STM32"的配置

"includePath": [// 声明这个工作区的 C/C++工程包含了哪些头文件目录

"${workspaceFolder}/**",

"${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32L1xx/Include",

"${workspaceFolder}/Drivers/CMSIS/Include",

"${workspaceFolder}/Drivers/STM32L1xx_HAL_Driver/Inc",

"${workspaceFolder}/Drivers/STM32L1xx_HAL_Driver/Inc/Legacy",

"${workspaceFolder}/Core/Inc"

],

"defines": [// 全局的预处理宏定义

"STM32L151xB",

"USE_HAL_DRIVER"

],

"compilerPath": "gcc.exe",// 如果添加了环境变量,可以像这样表示;否则就得加绝对路径,如:C:\\Program Files\\mingw64\\bin\\gcc.exe

"cStandard": "c11",// 使用的 C标准

"cppStandard": "c++17",// 使用的 C++标准

"intelliSenseMode": "gcc-x64"// 语言风格

}

],

"version": 4

}复制代码

注意:这个 json不允许有注释,所以,如果是像复制到你的文件里,记得把注释删了。

tasks.json

这个文件下 tasks 数组里的每一个对象都代表着一个任务。

{

// 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",// 终端(shell)型的任务

"command": "make",// *执行的命令

"args": [// 命令的参数

"-j6"// 表示六线程同时编译

],

"problemMatcher": ["$gcc"],// 表示如果出现了编译报错,问题面板会显示 gcc类型的错误

"group": {

"kind": "build",

"isDefault": true

}

}

]

}复制代码

注意:上面的 "command"选项中填的是 "make";实际上,在我们下载的 MinGW-w64编译器中,执行的是 mingw32-make.exe;但是,这里可以看到 mingw32-make.exe 文件名太长,并且不好记,因此我们可以将其复制并重命名为 make.exe 这样就与 Linux下的 make命令保持一致了;如果没有像前面说的那样复制出 make.exe,那么,在 "command"选项中填则是 "mingw32-make",同样的在执行编译操作时,键入的命令则是 mingw32-make。

settings.json

这个留着后面结合实例来说。

四、工程编译

当你配置完成上面的操作后,最最最好就是先保存所有文件,然后关闭 VS Code,再重新打开工程。

编译有两种:

1、点击窗口栏的 终端 -> 运行生成任务(快捷键 Ctrl+Shitf+B)

14.png (127.9 KB, 下载次数: 4)

2020-10-10 10:13 上传2、点击窗口栏的 终端 -> 新终端,选择 cmd

15.png (34 KB, 下载次数: 3)

2020-10-10 10:13 上传没有的话,那就点击一下它,然后点 “选择默认 Shell”,再点击旁边的垃圾桶,再重新打开一下。

键入 make,最后按回车键。当编译完成后就会像下图这样显示编译文件大小:

16.png (211.83 KB, 下载次数: 6)

2020-10-10 10:13 上传五、编译清除

编译文件清除,只需要在终端命令台里键入 make clean就可以了,但是,但是,如果使用的是 cmd的shell,你会发现:

并没有清除掉编译出来的文件。这是为什么呢?可以在这里得到答案:https://github.com/STAT545-UBC/Discussion/issues/55

根据里面的描述可以总结为:

解决方法1:使用 Windows版本的 rm是 del,因此可以简单地用 rm替换成 del。但是要注意,这样做意味着您将无法使用 Git Bash shell,因为它不支持 del命令程序;

解决方案2:假设你已安装 Git Bash(没有那就安装 Git呗,都 0202了,不会还有人不用 Git吧,实在实在不想用 Git,那么就找个支持 rm的终端命令台,例如:msys2),那么你可以把终端命令台切换到 Bash上面

第一个就简单了,在 makefile里把 rm替换成 del,如下图所示:

17.png (52.97 KB, 下载次数: 4)

2020-10-10 10:13 上传第二个,就像上面那样重新点击 “选择默认 Shell”,然后选择 Git bash

18.png (54.69 KB, 下载次数: 1)

2020-10-10 10:13 上传

19.png (84.29 KB, 下载次数: 2)

2020-10-10 10:13 上传

然后,用这种操作去修改终端 Sell,不同项目对于选择不同的终端,有时候需要经常切换,不方便;那么就有了工作区 settings.json文件配置的作用了。

在 settings.json文件中,我们只需要配置如下操作:

{

/* 终端在Windows上使用的shell的路径 */

"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",// 如果添加了环境变量可以去掉路径

"terminal.external.windowsExec": "C:\\Program Files\\Git\\bin\\bash.exe"// 与上面同理

}复制代码

如此一来,那么就只在该项目工作区内产生作用效果。

你看,颜色都不一样的:

20.png (63.25 KB, 下载次数: 1)

2020-10-10 10:13 上传

stm32 vscode 编译_STM32开发之 VSCode+gcc环境编译相关推荐

  1. 【原作者:吴秦(Tyler)http://www.cnblogs.com/skynet/archive/2010/04/12/1709892.html】Android开发之旅:环境搭建及HelloWo

    Android开发之旅:环境搭建及HelloWorld 2010-04-12 00:45 by 吴秦, 801360 阅读, 138 评论, 收藏, 编辑 --工欲善其事必先利其器 引言 本系列适合0 ...

  2. (016)java后台开发之Eclipse安装反编译插件

    在java(015)中gson-2.2.4.jar 源码的查看基于Attach Source code 链接到源码库gson-2.2.4-source.jar 实现的.而我导入的servlet-api ...

  3. STM32WL开发之LORA开发环境及其Demo例程介绍

    前言:在前一篇<STM32WL开发之LM401评估板开箱及PingPong测试>中经过测试,认为STM32WL的LoRa通信和易智联的LM401评估板都是OK的,接下来就开始开发环境的准备 ...

  4. 插件开发之VSCode

    欢迎各位大家关注本人微信公众号:程序员JC,小程序:RobotJC 里面包含很多本人之前做的小案例,也许这里有你想要的东西哦. 鉴于我前两周研究了并开发了一个VSCode插件的情况,这次就讲一下插件开 ...

  5. stm单片机c语言编译,单片机开发之C语言编程基本规范

    为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范.本标准规定了程序设计人员进行程序设计时必须遵循的规范.本规范主要针对单片机编程语言和08编译器而言,包括排版.注释.命名.变量 ...

  6. 模拟共享单车开发之路-APP客户端开发之Qt安卓环境的搭建(二)

    今天将电脑重装了系统,将VS2019,Qt等重新安装了, 需要的开发环境如下图所示: 值得注意的是, Qt中要新增安装组件:选中有关Android这一项 然后设置QtCreator编译路径:打开QtC ...

  7. Android开发之旅:环境搭建及HelloWorld

    2019独角兽企业重金招聘Python工程师标准>>> 引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Andr ...

  8. Android开发之Mac配置环境变量

    1.自行安装JDK 2.安装JDK后输入/usr/libexec/java_home -V命令查看JDK安装目录 3.如果你是第一次配置环境变量,可以使用"touch .bash_profi ...

  9. Android开发之旅:环境搭建及HelloWorld---吴秦(Tyler)

    --工欲善其事必先利其器 引言 本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方 ...

最新文章

  1. Java IO系列之字节流拷贝文件性能比较
  2. TensorFlow基本使用
  3. 淘宝特价版给拼多多送芒果,网友:这是什么操作?
  4. android webview js交互,响应webview图片的响应事件
  5. CentOS7下安装ELK三件套
  6. javascript中的变量
  7. 《啊哈!算法》笔记_Day01
  8. 华为防火墙ftp_FTP被动模式访问问题
  9. 随机系列生成算法(随机数生成)
  10. webpack -- 无法将“webpack”项识别为 cmdlet 。。。
  11. cpython vm_【协程原理】 - cPython的VM真变态
  12. 如何确定地址_小规模公司注册地址 创业者该如何选择
  13. office 2003 下载
  14. 从零开始研发GPS接收机连载——1、想法的萌发
  15. centos 7.6编译安装nginx
  16. android:ems 属性详细分析
  17. python解压7z文件_如何读取用7z压缩的文本文件?
  18. 【软件测试】使用RFT工具录制脚本要点
  19. Spring的动态代理原理
  20. post_thumbnail_html,WordPress自带thumbnail缩略图功能使用介绍

热门文章

  1. ln: 创建符号链接 “include/asm”: 不支持的操作
  2. 我的GitHub Blog开通了
  3. C++ 全局变量 静态变量 全局函数 静态函数
  4. H3C MSTP实验
  5. c语言 段错误 指针,求教为什么指针动态申请了空间,scanf的时候还会段错误
  6. python制作安装包_如何制作python安装模块(setup.py)
  7. php mysql 简单留言板_php+mysql 最简单的留言板_PHP教程
  8. 鸿蒙正式版什么时候上线,终于来了!华为鸿蒙正式版6月2日上线,EMUI时代落幕...
  9. 苹果手机mov文件如何复制到电脑_如何在手机上访问电脑上的文件(超详细步骤) iPhone版...
  10. geforce experience_Nvidia? Geforce? Experience?是什么?如何使用呢?