1. 概述
我在做单片机或嵌入式开发,接触到的第一个IDE(集成的开发环境)就是Keil,记得还是Keil2。但用过它的人都知道,虽然Keil是嵌入式开发工具届的经典,但是代码在代码编写、提示、检索等方面还有所欠缺。
使用过VSCode的,都被其开放和简约优雅折服!
VSCode作为一个Editor,能否弥补Keil编辑器的欠缺呢?答案是可以的。下面来介绍下怎么使用VSCode来编写单片机代码。
2. VSCode 嵌入式开发
首先需要安装VSCode,这里略去,读者自行百度即可,这里给出官网安装文档。
使用VSCode做嵌入式开发,基本分两种:一种是VSCode+Keil插件,一种是VSCode+PlatformIO IDE插件。
无论哪种方式,都离不开C语言开发环境支持。所以VSCode需要先安装C/C++支持。
2.1. VSCode搭建C/C++支持
这里不废话,直接给出 VSCode 官网教程,这里已经描述的很详细了。
- Windows系统上配置:https://code.visualstudio.com/docs/cpp/config-mingw
- Linux系统上配置:https://code.visualstudio.com/docs/cpp/config-linux
- macOS上配置:https://code.visualstudio.com/docs/cpp/config-clang-mac
2.2. VSCode+Keil 插件
原理就是通过调用Uv4.exe来编译项目源码。这个方式相对简单,尤其是对于熟悉 Keil 的同学。
2.2.1 Keil 安装
同样的,按照步骤自行百度。这里给出官网下载地址。
注意下,Keil有四种产品。
每个产品都是基于µVision+各自库文件构成。
笔者使用最多的是MDK-Arm和C51,分别下载两个产品,安装到一起,分别激活两个产品License。
2.2.2. Keil 插件安装
安装 Keil Assistant 插件。
2.1.3. Keil 插件配置
配置 Keil 的 UV4.exe 文件路径。我这里安装了C51和MDK两个产品,所以配置两个。
2.2.4. 编译下载
VSCode 打开工作区(就是自己项目的目录),一般会自动识别Keil项目文件(xxx.uvpro 文件)。如果没有识别可以手动添加。完成后像下面这个样子。
现在可以愉快的编码了。。。完成后可以编译,这里编译实际上跟 Keil 中编译一样(其实就是调用Keil编译,所以添加item文件、项目配置都需要回到Keil操作)。
2.2.5. 优缺点对比
优点:
- 代码提示、搜索功能强大,开发更快捷、高效。
- 可以快捷加入git项目版本管理。
缺点:
- 添加项目文件,库文件等,需要切换到 Keil 管理。
- 无法DEBUG(我目前还未找到,有知道的同学请告知)。
我一般是利用VSCode的强大编辑功能编码,用Keil的仿真软件调试。
2.3. VSCode+PlatformIO IDE插件
PlatformIO IDE for VSCode — Quick-Start
2.3.1. PlatformIO IDE 介绍
PlatformIO 是一个跨平台、跨架构、多框架的专业工具,适用于嵌入式系统工程师和为嵌入式产品编写应用程序的软件开发人员。官网对它的描述就是:嵌入式 C/C++ 开发的新一代工具集。
PlatformIO 核心是由Python编写,独立于平台平台运行的。支持现在主流的平台(Windows、Linux、macOS、ARM卡片电脑等)、单片机(ATmega、STC、STM32、ESP32等)和框架(Arduino、CMSIS、FreeRTOS等),使用标准项目模板,并支持多人协作。项目跨平台移植便捷,最重要的是开源。
2.3.2. PlatformIO IDE 插件安装
按照下面安装插件,安装完成后重启 VSCode。左边导航栏会出现PlatformIO图标。Platformio IDE 工具栏位于 VSCode 状态栏(左下角),包含了常用命令的快速访问按钮(鼠标放在上面会有提示)。
进入 PIO Home 主页,可以通过下图左边导航栏进入,也可以通过底部导航栏“[房子]”直接进入。
2.3.3. PlatformIO IDE 创建项目
点击“New Project”使用项目向导创建一个项目,注意取消“Location”选钩,选自定义目录存放项目工程。
这里以我的 ESP-WROOM-32 开发板为例。第一次创建,需要下载依赖包、框架等,所以比较慢!
Board - 选在自己的开发板型号
Framework - 开发板对应支持的框架。不同的开发板型号,所支持的框架有所不同。
2.3.4. 编译下载
创建完成后,项目长这个样子。
编码完成后,点击底部导航栏的“√”进行编译。编译通过后,点击底部"→"下载代码到开发板
2.3.5. 优点
首先是PlatformIO根据开发板,可以根据框架快速构建项目,让我们可以把更多的时间和精力投放到产品和项目需求上来。
其他的~~~我也还在体验中,不过网上看大家投在推荐!
3. 结尾
不妨去尝试一下新事物!
值得一提的是,PIO 也支持51单片机(好像有部分51支持不全),51使用的SDCC(Small Device C compiler suite)编译器。SDCC的语法扩展与Keil的语法扩展不同。
语法扩展 项目 SDCC Keil 扩展关键字名称 以两个下划线开头,如__interrupt, __bit 无需下划线 特殊功能寄存器(SFR)的声明方式 __sfr __at (0x80) P1; sfr P1 = 0x80; 特殊功能寄存器位寻址的声明方式 __sbit __at (0x87) P17; sbit P17 = P1^7; 中断服务(ISR)函数的链接 需要在main函数前声明 不需要