Keil+VSCode优化开发体验
目录
一、引言
二、详细步骤
1、编译器准备
2、安装相应插件
2.1 安装C/C++插件
2.2 安装Keil相关插件
3、添加keil环境变量
4、加载keil工程文件
5、VSCode中成功添加工程文件后可能出现的问题
5.1 编码不一致问题
6、在VSCode中进行编译工程以及烧录程序
7、效果展示
8、使用注意事项
三、总结
一、引言
前面,我们陆陆续续讲解了关于STM32的介绍、入门的点灯案例以及stm32中GPIO的相关介绍。在编写点灯案例的过程中我们使用的编译器时keil,我们很明显能发现,他和其他编译器在一些方面的差距,如快速进入某函数实现体或某文件中、代码提示等都没有像VSCode等编译器那么美观。
因此,我们接下来要说的就是如何去结合过去好用的编译器如vscode来进行stm32开发的代码编写,优化开发体验。
二、详细步骤
1、编译器准备
既然我们要使用VSCode,那么首先我们要有这个软件。因此先去vscode官网下载该软件:Visual Studio Code - Code Editing. Redefined,点击即可直接进入vsc的官网,然后进行下载安装即可,如若安装过程有何问题,可自行搜索vscode安装教程。
安装成功后启动VSCode后的页面大概长这样:

因为我已经使用过,所以和最初进入的页面会有些许差异,大概就是这样的。
2、安装相应插件
接下来,就正式开始在VSCode中配置编译环境了。
2.1 安装C/C++插件
首先,我们需要安装相应插件,因为我们在编译器中需要使用C语言来进行代码的编写,所以首先要安装好C/C++的插件。
点击最左边一竖栏中第五个长着像四个方块的图标,就会进入扩展:工具页面,接着在搜索栏输入C即可搜索到如下图所示的插件,我们选择第一个插件,进行安装即可。
我这里已经安装了,所以那里显示的“禁用 卸载”.

安装好了以后,关于C语言编码的环境就有了。
2.2 安装Keil相关插件
然后为了顺利地通过VSCode去编译烧录keil的工程文件,还需要安装关于keil的插件,安装步骤如下:
同样是进入VSCode的扩展,然后在搜索一栏中搜索keil,就能找到关于keil的相关插件,然后安装“Keil Asssistant以及Embedded IDE”,步骤如下图所示

3、添加keil环境变量
把相关插件安装好了以后,因为实际上使用VSCode去编写代码实际上也是间接地使用了keil的环境,换句话说,此事VSCode可以看做是一个文本编辑器,而keil可看作是更底层的环境,我现在就是通过在VScode中写代码然后保存到底层keil中,编译和烧录同样也是要经过底层的keil实现。这个时候大家就会发现,这岂不是变麻烦了?确实是这样,不过好处就是能够优化我们编码的体验,如使用VSCode编写代码时界面更加好看了,同时还有用熟悉的快捷键一下进入某文件或函数实现体中,同时有这更多的代码提示等等优点。
因此,现在我们要做的就是让VSCode能够顺利找到我们的Keil,即添加keil的环境变量,如何做呢?
进入VSCode后,我们可以看见界面最左下角有个齿轮图标,我们点击【齿轮】,显示一个选项栏,再点击【设置】,就能进入VSCode设置界面,接着我们直接在【搜索栏】中输入keil快速索引到keil相关的配置部分,就能看见如下图所示界面,接着根据自己所使用的keil版本去选择添加keil路径的一栏,然后添加即可。 主要操作步骤如下图所示:

4、加载keil工程文件
正确安装好插件并且设置好keil所在路径后,我们就可以开始将keil工程文件添加到VSCode的工作空间了,具体步骤如下:
找到资源管理器下的状态栏中最后一个关于keil的选项KEIL UVISION PROJECT,然后展开它:就能看见旁边出现一个【彩色加号】,继续点击这个加号即可添加我们想要的工程文件了(注意要选择我们工程文件夹中的.uvprojx后缀名的文件)
以下图片展示的具体操作步骤:

添加工程文件后,VSCode就会对工程文件夹加载到此时的工作空间,可能会弹出如下图窗口:直接点击“是,信任此作者”即可,同时可勾上“信任父文件夹...”,具体操作如下图所示:

然后我们还会看见在界面右下角还有个提示:keil project load done.switch workspace? 这个提示的主要意思就是 我们的keil工程文件已经成功加载到VSCode中了,是否要进入到该工作空间下?我们直接点击OK即可,这样我们才能在VSCode中看见我们的代码文件夹。
具体操作步骤如下图所示:

OK后,就是如下图界面:

5、VSCode中成功添加工程文件后可能出现的问题
5.1 编码不一致问题
添加完工程文件后,我们点击User查看我们之前写的main.c文件内容,如下图所示:

很明显和我们在keil中的内容是一样的,同时在这里看还有代码彩色区分效果,同时鼠标移到代码上,还会有很好的代码提示,可见此时看起来是不是更加舒服了呢。
这个时候,有些同学可能会出现这样的问题:一点击main.c文件,直接蹦出一些乱码。。。(此时孩子感觉天都要塌了...),这是为什么呢?孩子不要慌,这是个小问题~:最大的可能就是编码不一致:即在keil中使用的编码和此时vscode中的编码不一样,如何解决呢?只需要在VSCode最底下一栏找到UTF-8或者GBK亦或是其他编码格式的显示然后点击它进行修改即可消除乱码,一切都回到了应该的样子 ~ ^ ^ 具体操作步骤已经在上图展示出来了。
如果还不清楚也可以上网搜VSCode如何修改编码格式,就能看见很多详细的解决方法的。
6、在VSCode中进行编译工程以及烧录程序
最后,我们文件啥的都已经成功弄到vscode了,那么如何实现在VSCode中进行程序的编译和烧录呢?很简单,具体图标和操作如下图所示

我们进行编译试试

7、效果展示
最后,我们再在VSCode中烧录点灯程序看看是否能够成功吧
首先还是以原来的点灯案例代码为例,如下:
int main(void)
{
// 1. 开启时钟
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
// 2. 配置GPIO工作模式
GPIOA->CRL &= ~GPIO_CRL_CNF0;
GPIOA->CRL |= GPIO_CRL_MODE0;
GPIOA->CRL &= ~GPIO_CRL_CNF1;
GPIOA->CRL |= GPIO_CRL_MODE1;
GPIOA->CRH &= ~GPIO_CRH_CNF8;
GPIOA->CRH |= GPIO_CRH_MODE8;
// 3. 设置PA0、1、8为低电平 点亮三色灯
GPIOA->ODR &= ~GPIO_ODR_ODR0;
GPIOA->ODR &= ~GPIO_ODR_ODR1;
GPIOA->ODR &= ~GPIO_ODR_ODR8;
// 4. 死循环保持状态
while(1){}
}
进行烧录
烧录成功了!看看现象

OK,现象是对的。
8、使用注意事项
然后再给出一些注意事项:
1、如果我们在VSCode中修改代码了,然后进入keil时就会看见一个提示:

此时不用慌,直接点击是即可。
2、同时,如果我们在keil中修改了代码,此时我们直接回到已经打开的vsCode中查看的话是没有改变的,但实际上确实改变了,此时我们只需要在VSCode中关闭文件重新加载即可看见在keil中修改过的代码了。
三、总结
本期我们讲解了关于VSCode在单片机开发编码带来的优化体验以及实现keil和VSCode的联合开发的详细步骤以及相关注意事项。
相关文章:
Keil+VSCode优化开发体验
目录 一、引言 二、详细步骤 1、编译器准备 2、安装相应插件 2.1 安装C/C插件 2.2 安装Keil相关插件 3、添加keil环境变量 4、加载keil工程文件 5、VSCode中成功添加工程文件后可能出现的问题 5.1 编码不一致问题 6、在VSCode中进行编译工程以及烧录程序 7、效果展示…...
vue2中引入cesium全步骤
1.npm 下载cesium建议指定版本下载,最新版本有兼容性问题 npm install cesium1.95.0 2.在node_models中找到cesium将此文件下的Cesium文件复制出来放在项目的静态资源public中或者static中,获取去github上去下载zip包放在本地也可以 3.在index.html中引…...
工程师 - 智能家居方案介绍
1. 智能家居硬件方案概述 智能家居硬件方案是实现家庭自动化的重要组件,通过集成各种设备来提升生活的便利性、安全性和效率。这些方案通常结合了物联网技术,为用户提供智能化、自动化的生活体验。硬件方案的选择直接影响到智能家居系统的性能、兼容性、…...
中小企业人事管理:SpringBoot框架高级应用
摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,中小企业人事管理系统当然也不能排除在外。中小企业人事管理系统是以实际运用为开发背景,运用软件工程原理和…...
嵌入式Linux驱动开发日记
目录 让我们从环境配置开始 目标平台 从Ubuntu开始 从交叉编译器继续 arm-linux-gnueabihf-gcc vscode 没学过ARM汇编 正文开始——速度体验一把 写一个链接脚本 写一个简单的Makefile脚本 使用正点原子的imxdownload下载到自己的SD卡上 更进一步的笔记和说明 从IM…...
迪杰特斯拉算法(Dijkstra‘s)
迪杰斯特拉算法(Dijkstras algorithm)是由荷兰计算机科学家艾兹格迪科斯彻(Edsger W. Dijkstra)在1956年提出的,用于在加权图中找到单个源点到所有其他顶点的最短路径的算法。这个算法广泛应用于网络路由、地图导航等领…...
reids基础
数据结构类型 String setnx //设置key不存在,则添加成功 setex name 10 jack // key 10s失效,自动删除 hash hset hget list 按添加数据排序 lpush //左侧插入 rpush //右侧插入 set 不重复 sadd //添加…...
私有化部署视频平台EasyCVR宇视设备视频平台如何构建视频联网平台及升级视频转码业务?
在当今数字化、网络化的时代背景下,视频监控技术已广泛应用于各行各业,成为保障安全、提升效率的重要工具。然而,面对复杂多变的监控需求和跨区域、网络化的管理挑战,传统的视频监控解决方案往往显得力不从心。 EasyCVR视频融合云…...
SparkContext讲解
SparkContext讲解 什么是 SparkContext? SparkContext 是 Spark 应用程序的入口点,是 Spark 的核心组件之一。每个 Spark 应用程序启动时,都会创建一个 SparkContext 对象,它负责与集群管理器(如 YARN、Mesos 或 Spa…...
MODBUS TCP转CANOpen网关
Modbus TCP转CANopen网关 型号:SG-TCP-COE-210 产品用途 本网关可以实现将CANOpen接口设备连接到MODBUS TCP网络中;并且用户不需要了解具体的CANOpen和Modbus TCP 协议即可实现将CANOpen设备挂载到MODBUS TCP接口的 PLC上,并和CANOpen设备…...
渗透测试---shell(4)脚本与用户交互以及if条件判断
声明:学习素材来自b站up【泷羽Sec】,侵删,若阅读过程中有相关方面的不足,还请指正,本文只做相关技术分享,切莫从事违法等相关行为,本人一律不承担一切后果 目录 一、shell脚本与用户进行交互 使用 read 指…...
02_Spring_IoC实现
接下来先简单说一下关于IoC的一些要点,后面我们再详细一步一步讨论。 一、IoC控制反转 IoC控制反转它是一种思想,不是具体的实现控制反转的目的是为了降低程序的耦合度,提高程序的可扩展性,从而满足OCP原则和DIP原则控制反转,那到底反转是什么东西? 我们不再使用某个对象…...
使用Python3实现Gitee码云自动化发布
仓库信息 https://gitee.com/liumou_site/ip 实现代码 import osimport requests from loguru import loggerdef gitee(ver, message, prerelease: bool False):"""在 Gitee 上创建发布版本:param ver: 版本号:param message: 发布信息:param prerelease: 是…...
Ubuntu24.04下的docker问题
按官网提示是可以安装成功的,但是curl无法使用https下载,会造成下述语句执行失败 # Add Dockers official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https…...
PAT (Basic Level) Practice (中文)1002 写出这个数
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 #include<bits/stdc.h> using namespace std; string a; int sum0; int f0; int n[10005]; int main(){ cin>>a; int c0; int laa.size(); for(int i…...
C07.L07.STL之映射.应用2.统计数字
题目描述 某次科研调查时得到了 n 个自然数,每个数均不超过 1500000000 (1.5*10^9 )。已知不相同的数不超过 10000 个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。 输入格式 包含 2 行: 第…...
微信小程序组件详解:text 和 rich-text 组件的基本用法
微信小程序组件详解:text 和 rich-text 组件的基本用法 引言 在微信小程序的开发中,文本展示是用户界面设计中不可或缺的一部分。无论是简单的文本信息,还是复杂的富文本内容,text 和 rich-text 组件都能够帮助我们实现这些需求。本文将详细介绍这两个组件的基本用法,包…...
算法.图论-习题全集(Updating)
文章目录 本节设置的意义并查集篇并查集简介以及常见技巧并查集板子(洛谷)情侣牵手问题相似的字符串组岛屿数量(并查集做法)省份数量移除最多的同行或同列石头最大的人工岛找出知晓秘密的所有专家 建图及其拓扑排序篇链式前向星建图板子课程表 本节设置的意义 主要就是为了复习…...
this.$prompt 限制输入长度
this.$prompt(请输入关键词名称, 提示, {confirmButtonText: 确定,cancelButtonText: 取消,inputPattern: /^\d{0,50}$/,inputErrorMessage: 关键词名称长度不能超过50个字符 }).then(({ value }) > {})...
JDBC使用p6spy记录实际执行SQL方法【解决SQL打印两次问题】
p6spy介绍 p6spy 是一个开源的 JDBC 数据源代理工具,主要用于拦截和记录应用程序与数据库之间的所有 SQL 操作,方便开发者进行 SQL 调试、性能监控和问题排查。 p6spy可以打印实际执行的sql,在开发过程中方便调试,和使用框架无关…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
