为啥要这么麻烦嘛,这个不解释,生命在于折腾,相信很多人都在折腾,也很多人去百度过,按百度的教程估计还是有很多人不会弄,所以写这篇教程为那些还没有折腾成功的砖工提供点线索。

VScode现在真的很强大,界面跟配色都是一流,再加个各种强大的插件,使VScode越来越成为万能的IDE,可以开发各种语言。这里不多说,VScode相信绝大部分的人都会安装使用,就不再重复了。

Gcc对应CortexM的编译器arm-none-eabi-gcc,只要百度下,都可以下载到。这里直接搬砖https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads,点页面右边的Download然后选择对应的版本就可以下载了。安装包是exe文件,安装就是一直next就可以了。最后一步,一定要勾上Add path to environment varibale这个选项,把Gcc增加到环境变量,否则就要自己去环境变量那里增加。安装完成后会自动打开CMD,输入arm-none-eabi-gcc -v就可以看到gcc版本号,安装完成。

在CMD下试下make,发现找不到该命令,这点比较坑,Gcc里没有自带Make。这玩意在百度上还真不好。我这边已经找到了,X64版本跟X86版本都有。还就是尽量不要用Ghost系统,不然会发现缺失一些Dll,导致make无法执行,自行在网上下载缺失的DLL补回去应当可以了。把make.exe复制到gcc安装目录下的bin文件夹里面(C:\Program Files\GNU Tools ARM Embedded\8 2019-q3-update\bin),然后在CMD下执行make,就可以看到make已经执行了。

目前可以用gcc来编译STM32了,打开CubeMX新建工程,CubeMX的使用就不多说了,最后生成工程的时候选择Makefile工工程就可以了。在生成的工程目前下,按住Shift+右键,点在此次打开命令窗口,就可以快速打开CMD,直接敲入make 或者make -j4(-j4就是4线程编译,大家自行根据电脑配置选择线程数据,我这是用的虚拟机,只配置了2个核,所以用了4线程)。回车后就可以看到gcc在编译工程了,最后编译完成,生成elf、Hex、Bin等文件。

接下来就是OpenOCD,这里直接转到https://sourceforge.net/projects/openocd/files/latest/download就可以下载openocd-0.10.0.zip。解压OpenOCD,把OpenOCD/Bin目录下的三个文件同样复杂到Gcc目录下的Bin文件夹里。在CMD下执行openocd。可以看到openocd可以执行了。接下来就是复制OpenOCD的脚本文件,在原来解压的OpenOCD文件夹里的OpenOCD\share\openocd\scripts下最关键的两个目录,interface跟target,interface就是放的调试器的脚本,target放的是芯片脚本,我这边用的STM32F105跟ST-link,把interface下的stlink.cfg,target下的stm32f1x.cfg、swj-dp.tcl,scripts目前下的mem_helper.tcl4个文件复制到STM32工程目录下。然后在CMD下输入 openocd -f stlink.cfg -f stm32f1x.cfg,此时发现提示找到sw-dp.tcl文件。用记事本或者Notepad++打开stm32f1x.cfg文件,在第6行source [find target/swj-dp.tcl],swj-dp.tcl是在当前目前下,所以修改成source [find swj-dp.tcl]后保存,再次在CMD下执行openocd -f stlink.cfg -f stm32f1x.cfg,就可以看到OpenOCD通过stlink连接上了芯片。

到这一步,前期工作已经完成了,接下来就是拿出来我们的VScode。在拓展那里直接搜索cortex,就可以看到Cortex-Debug调试插件,后面三个插件是调试插件的器件包,我们一并安装上。用VScode打开STM32的工程。按ctrl+~就可以快速打开控制台,在控制里make -j4先编译,如果还没有编译过。点开VS的Debug栏,然后点打开配置lunch.json,选择Cortex Debug。就会打开Debug的配置文件,这里最关键的部分,也是很多百度上教程没有说明白的地方。

    "configurations": [{"name": "Cortex Debug","cwd": "${workspaceRoot}","executable": "./build/stm32f105.elf","request": "launch","type": "cortex-debug","svdFile":"C:/Users/Administrator/.vscode/extensions/marus25.cortex-debug-dp-stm32f1-1.0.0/data/STM32F105xx.svd","servertype": "openocd","configFiles": ["stlink.cfg","stm32f1x.cfg"]}]

这里直接放上我的配置,最关键的是servertype要选择openocd,跟configFiles要加上stlink.cfg跟stm32f1x.cfg,这两个文件就是上一步复制到工程目录下的,调试器调用 OpenOCD的时候会去找这两个文件,前面 用openocd -f stlink.cfg -f stm32f1x.cfg测试过可以连接上芯片,这里配置就不会有问题。然后就是executable可执行文件,gcc编译出来的是elf文件,相当于MDK的axf文件,在工程目录下的build里面,大家可以找到,修改成自己工程对应的可以了。再然后就是svd文件,这是芯片的寄存器列表文件,具体位就是在Windows用户目录下的C:\Users\Administrator\.vscode\extensions\marus25.cortex-debug-dp-stm32f1-1.0.0\data。大家根据路径一级一级去找就可以找到对应芯片的svd,这是前面要安装CortexDebug的器件包插件才会有的。

一切都准备完毕,接下来就是激动人心的时候了,按F5进入调试,过了一会就可以看到进到调试界面,左边的Cortex Peripherals也可以看到外设寄存器,再按F5,就可以看到调试全速运行了,其它打断点什么,单点之类的,跟MDK没有太多区别,就不多复述了。

最后还有几个点,在VScode的输出那里选择Adapter Output就可以看到OpenOCD的输出信息,可以帮助我们查看OpenOCD是否正常连接上芯片跟查找问题。还有就是Makefile默认没有打开调试编译,要做到源码级调试,我们还要修改下Makefile,在Makefile的C_DEFS宏定义那里拉架-DDEBUG打开调试编译。最后修改下make clean命令,清除工程编译文件,用于重新编译工程,Makefile里的命令是Linux下的,我们修改成Windows CMD的命令 -rmdir /s /q $(BUILD_DIR),其实就是删除build文件夹。

目前为止我们已经可以在VScode下编译STM32并调试,用起来比Eclipse要方便强大的多。而且是全开源的软件,不用担心版权的问题。后面会继续写Ubuntu下的环境搭建,其实比Windows下的搭建简单很多^_^。End

Windows环境下CubeMX+VScode+Gcc+OpenOCD开发STM32环境搭建相关推荐

  1. 使用STM32标准库构建VSCode+gcc+openOCD开发STM32

    目前为止,使用STM32的平台比较流行的是keil for Arm和IAR for ARM,这两个平台都比较类似,集成编辑.编译和调试环境,俗称IDE.用户只需简单的操作就能编译和调试STM32,非常 ...

  2. windows环境下设置多个PHP版本的环境变量

    windows环境下设置多个PHP版本的环境变量 所在位置 修改系统变量 修改用户变量 重启电脑 所在位置 我的电脑->属性->高级系统设置->高级->环境变量 根据图示,找到 ...

  3. Windows环境下的安装gcc

    Windows具有良好的界面和丰富的工具,所以目前linux开发的流程是,windows下完成编码工作,linux上实现编译工作. 为了提高工作效率,有必要在windows环境下搭建一套gcc,gdb ...

  4. windows下qt5 kinect 2.0开发与环境配置

    上一次挑战杯我们用kinect1.8做了一个体感3d试衣系统,那时就想用qt来开发了,由于那时候很多东西都不懂,怎么也不知道怎样去配置环境,只能在vs2013中开发,结合qt开发界面.直到出了kine ...

  5. 【win10 windows环境下qt6.4.1+vs2019开发环境搭建】

    win10 qt6.4.1+vs2019环境搭建 在wind10 64位操作系统下搭建Qt6.4.1 + Visual Studio 2019 MSVC开发环境,软件下载说明一下,VS,QT都可以去官 ...

  6. WSL2环境下交叉编译QT工程,开发板成功运行(全过程详解)

    文章目录 配置WSL2环境 什么是WSL2? 安装WSL2 步骤 1 - 启用适用于 Linux 的 Windows 子系统 步骤 2 - 检查运行 WSL 2 的要求 步骤 3 - 启用虚拟机功能 ...

  7. 在Windows平台下使用安装GCC

    我想将linux机 器上的一个程序拿到Windows下用.直接将souWindowsrce codes拷贝到Windows下无法用Windows的C编译器编译,大概是缺少一些库吧.后来,想到Linux ...

  8. amd cpu不能在cmd环境下运行java代码_00 开发环境搭建

    我们来着手在本地计算机环境安装 TensorFlow 最新版框架.TensorFlow 框架支持多种常见的操作系统,如 Windows 10.Ubuntu 18.04.Mac OS 等等,同时也支持运 ...

  9. Mac版下实现51单片机进行开发的环境搭建

    目录 前言 简单介绍一下51单片机吧 一.安装homebrew 二.内核编译器 sdcc 安装 三.安装CH341驱动 四.烧录程序stcgal的安装 1.python3下载安装并配置环境 2.验证是 ...

最新文章

  1. Go 分布式学习利器(16) -- go中可复用的package构建
  2. 阮征:互联网金融下的智能客户服务探索
  3. 排序算法复习之一趟快速排序算法:为什么说关键字所占的位置是多余的
  4. JavaScript 实现数据结构中的所有算法---通俗易懂
  5. addeventlistener事件第三个参数 passive_JS DOM 事件流、事件冒泡
  6. 学了C++不会STL,简直少了左膀右臂
  7. CSS3实现文字描边的2种方法
  8. 最简单的基于FFmpeg的移动端例子附件:SDL Android HelloWorld
  9. JAVA设计模式-单例模式(Singleton)线程安全与效率
  10. mysql cast和convert函数
  11. 版本更新带来的缓存问题_【第1563期】缓存最佳实践 amp; maxage的陷阱
  12. 利用Brettle.Web.NeatUpload控件对打文件进行上传(转)
  13. 前端提高篇(三十九)CSS进阶7:columns多列布局
  14. VNC远程控制软件,五款用了都说好的VNC远程控制软件
  15. 什么是广域网(WAN、公网、外网),什么是局域网(LAN、私网、内网)
  16. 操作系统核心与驱动程序
  17. H5标签input标签上传文件(图片)
  18. 数据库的增删改查加遍历
  19. matlab 端点检测 能零比法_基于短时能量与过零率的端点检测的matlab分析
  20. C语言进阶第15式:逻辑运算符分析

热门文章

  1. RMAN异机恢复步骤
  2. linux 进程 status,Linux 进程状态详解
  3. 学习-Java异常处理之try-catch之异常捕获
  4. UUID生成10位纯数字
  5. CNVD证书获得及要求
  6. 连接Oracle时出现ORA-12505错误
  7. 修改mysql端口号
  8. DateTime.Now.ToString() 用法
  9. 计算机开机显示花屏,电脑开机乱码花屏故障,动动手或就解决
  10. 艾盟赢销:电话销售做好这18个话术技巧,成单率可提升33%