VSCode下开发STM32——基于Keil工程
废话前言
相信很多同学入门STM32用的都是Keil,然后后面的开发也都是一直用它了(太巧了我也是!)。对于用惯了VS Code本颜狗我来说,Keil实在是长得太丑了。于是我就改了一下编辑器配置,它就变成了这样:
还是很难看对吧。。。
而且Keil的自动补全,相比VS Code,也实在有点太弟弟了吧。于是我就开始折腾看怎么在VS Code上来开发STM32,最终实现了在VS Code上写代码、编译、烧写。
具体步骤
其实总结起来就三步:
- 安装VS Code
- 修改一下包含头文件和宏定义,实现VS Code自动补全和提示
- 写一个调用Keil的脚本,实现编译、下载
注意我们是在Keil原有工程上进行修改的,所以工程的管理(添加文件之类的操作)还是要在Keil里面来操作的
安装VS Code
首先到这里下载并安装VS Code(应该很多人都装好了吧)。然后你可以安装一些拓展、主题之类的。安利一下几个拓展(C/C++必须有,其它随意):
- Bracket Pair Colorizer
- C++ Intellisense
- C/C++
- Chinese (Simplified) Language Pack
- GitHub
- Beautify
- Visual Studio IntelliCode
你也可以换个顺眼的字体,我用的Monaco,感觉很不错。
然后我们在工程根目录下,右键-Open with code(或者直接在VS Code里面打开文件夹),就像这样:
修改宏定义和头文件
我们在新建第一个工程的时候肯定都有设置过这个(相信很多人都忘记了):
注意红色框框里面的内容,这些其实就是宏定义,我们把它加入到sys.h(或者是system.h)里面:
#ifndef STM32F40_41xxx
#define STM32F40_41xxx
#define USE_STDPERIPH_DRIVER
#endif
然后我们再把一些用到的头文件添加进来,最后变成这样:
#ifndef STM32F40_41xxx
#define STM32F40_41xxx
#define USE_STDPERIPH_DRIVER
#include "misc.h"
#include "stm32f4xx_adc.h"
#include "stm32f4xx_dcmi.h"
#include "stm32f4xx_dma.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_it.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_spi.h"
#include "stm32f4xx_tim.h"
#include "stm32f4xx_usart.h"
#endif
这时候就有自动补全、提示和跳转了
自动补全:
提示:
查看/跳转定义:
通过脚本调用Keil实现编译、下载
如果还要在Keil上编译下载那就得来回切,也太麻烦了。还好Keil的编译器是可以命令行调用的,具体可以看这里,然后我写了个bat脚本:
@echo off
REM 这里把UV设置成Keil安装地址
set UV=D:\sofeware\KeilMDK\UV4\UV4.exe
if "%1" == "" goto NOP
set UV_PRO_PATH=%cd%\USER\%1.uvprojx
if "%2" == "-b" (
echo Init building ...
%UV% -j0 -b %UV_PRO_PATH% -o %cd%\build_log.txt
type build_log.txt
) else if "%2" == "-f" (
echo Init flashing ...
%UV% -j0 -f %UV_PRO_PATH% -o %cd%\build_log.txt
type build_log.txt
) else (
echo Init building ...
%UV% -j0 -b %UV_PRO_PATH% -o %cd%\build_log.txt
type build_log.txt
echo Init flashing ...
%UV% -j0 -f %UV_PRO_PATH% -o %cd%\build_log.txt
type build_log.txt
)
if "%3" == "-f" (
echo Init flashing ...
%UV% -j0 -f %UV_PRO_PATH% -o %cd%\build_log.txt
type build_log.txt
)
goto end
:NOP
echo No ProjectName
goto end
:end
exit
把上面的代码保存为complie.bat,修改UV为自己Keil的安装路径,然后放到STM32工程根目录,接下来我们就可以运行这个脚本编译下载了。
- 只进行编译
./complie.bat Template -b
- 只进行烧写
./complie.bat Template -f
- 编译并下载
./complie.bat Template
注意这里的Template
是你的工程名
One More Thing
用VS Code还可以很方便地进行版本控制,比如我们这个暑假为了准备电赛做了很多项目,通过版本控制我只需要一个工程就行了,切换到不同的分支就瞬间切换到了另一个工程,超级方便!!
这是我们的一部分分支:
查看修改历史: