VScode真是个宝,啥都能写,啥平台都能用。本篇教你如何使用VScode配合cubeMX实现一键下载。
1. 硬件
正点原子stm32F103RC开发版(只看芯片型号就行),ST-link调试器。
2. 环境配置
我的os是Win10,理论上Mac和Linux桌面版都可以运行。
首先,安装Vscode和cubeMX,本篇默认以上软件已经安装好。
a. 安装platformIO插件
在VScode中,在插件市场搜索。首次安装时间较长,因为它要安装核心组件platformIO-core
,可以理解为它的后端. 去买杯饮料,或者吃个鸡, 回来差不多就好了.
b. 新建platformIO工程
安装好后, 打开Home Page:
在右侧Quick Access栏中,有4个选项。可以看得出来,PIO对Arduino的支持比较好。但是此时我们需要的是STM32+CubeMX。
点击New Project
打开project配置界面:
点击Finish
后,如果是首次配置的话,又是一段漫长的等待(一把王者农药或者恰鸡)
完成后,VSCode会自动重新加载到该项目文件夹。到这里,一个PIO工程就初始化完成了。
3. 配合CubeMX代码生成
有两种方式可以使其完美配合。
a.1 (建议) 将已有的.ioc文件放入PIO工程根目录下
然后在CubeMX里重新打开这个.ioc文件重新generate code即可。
a.2 新建CubeMX工程
这个有点麻烦,新建的工程必须是空文件夹所以不建议。文章末尾给了一个骚操作思路。
然后CubeMX的Toolchain选项中改为这两个之一:
在用CubeMX生成代码之前先做三件事情:
上图是PIO工程的默认项目目录,其中:
1. 将include
目录重命名为Inc
2. 将src
目录重命名为Src
3. 编辑platformio.ini
,在最下面添加:
[platformio]
include_dir=Inc
src_dir=Src
然后就可以在CubeMX中点击生成代码了。
4. 刷写MCU
如果要同时连接串口(USB)和调试器到MCU,一定要先插调试器!
编辑platformio.ini
, 添加上传工具选项和debug工具选项:
[env:genericSTM32F103RC]
platform = ststm32
board = genericSTM32F103RC
framework = stm32cube
debug_tool = jlink
upload_protocol = jlink
[platformio]
include_dir=Inc
src_dir=Src
这里用的是jlink.如果使用stlink,将上述两项jlink修改为stlink即可.
PIO有多种上传方式可以选择,甚至可以用串口方式烧写,具体用法可以到PIO官网查看.
通过调试器连接板子(ST-Link或者J-link亲测都行)后,点击upload:
若是第一次使用,PIO会开始自动下载OpenOCD等开源工具以及jlink或者STlink的驱动,又可以来一盘农药或者恰鸡了。
上传成功:
5. 在VSCode里Debug
由于在上一步中已经在platformio.ini
里指定了debug_tool
,现在可以按下VSCode中最万能的F5
按键,一键对stm32进行debug操作。
6. 后话
最近在上嵌入式这门课,一开始用Keil uVision这个ide,编码下载调试啥都能干,但是缺点就是颜值不大行,而且有些臃肿了。对于用惯了VScode的我来说实在是用不方便,尤其是在智能补全这方面,keil真的不行。
过了两三次实验课,开始用cubeIDE(cubeMX)。因为之前用keil实在是学不到什么东西,所有东西都是调正点原子在教程里写好的库。当然也不是不能学,但是实在是懒惰,不想去深究源码,以后真的要做什么东西估计还是不会做。
cubeIDE, 虽然直接套了Eclipse的一层壳,但是代码补全以及刷写MCU实在是不符合习惯,最终还是放弃.
最近有同学说Clion用OpenOCD工具链刷FreeRTOS时炸掉。至少我在PIO里,openOCD刷FreeRTOS时没问题的。不过PIO刷cubeMX的FreeRTOS又得多操作一点东西,下期单独开个帖子讲。
7.快速操作
理论上建立这样一个工程只需要目录下有俩文件,一是platformio.ini
,二是xxx.ioc
。实际上我新建工程也是这么干的,直接复制原有工程的这两个文件就然后点击upload按钮就初始化完成了。