当前位置: 首页 > news >正文

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&#xff0c;计算其各位数字之和&#xff0c;用汉语拼音写出和的每一位数字。 #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 个自然数&#xff0c;每个数均不超过 1500000000 (1.5*10^9 )。已知不相同的数不超过 10000 个&#xff0c;现在需要统计这些自然数各自出现的次数&#xff0c;并按照自然数从小到大的顺序输出统计结果。 输入格式 包含 2 行&#xff1a; 第…...

微信小程序组件详解: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 数据源代理工具&#xff0c;主要用于拦截和记录应用程序与数据库之间的所有 SQL 操作&#xff0c;方便开发者进行 SQL 调试、性能监控和问题排查。 p6spy可以打印实际执行的sql&#xff0c;在开发过程中方便调试&#xff0c;和使用框架无关…...

用LVGL玩转嵌入式UI:5个实战控件代码详解(按钮/滑块/图片/标签/开关)

LVGL嵌入式UI开发实战&#xff1a;五大核心控件深度解析与代码优化 在资源受限的嵌入式设备上实现流畅美观的用户界面&#xff0c;一直是开发者面临的挑战。LVGL&#xff08;Light and Versatile Graphics Library&#xff09;作为一款轻量级开源图形库&#xff0c;凭借其丰富的…...

告别云端推理:手把手教你用Vivado HLS在AX7350开发板上部署YOLOv3(附完整工程)

从零部署YOLOv3到AX7350开发板&#xff1a;FPGA加速实战全流程解析 在边缘计算领域&#xff0c;FPGA因其低延迟、高能效和可重构特性&#xff0c;成为深度学习模型部署的热门选择。本文将带您完成YOLOv3目标检测模型在AX7350开发板上的完整部署流程&#xff0c;从环境准备到最终…...

【深度解析】Claude Auto Dream:从“短期对话”到“项目级心智模型”的记忆系统升级

摘要 本文从 Anthropic 新增的 Auto Dream&#xff08;/dream&#xff09;功能出发&#xff0c;系统解析大模型“跨会话记忆一致性”这一核心难题&#xff0c;剖析 Auto Memory Auto Dream 组合背后的技术逻辑&#xff0c;并给出如何在自己项目里实现“类 Auto Dream 记忆管理…...

MQTT通信中的QoS级别详解:SpringBoot如何选择最适合的传输质量?

MQTT通信中的QoS级别详解&#xff1a;SpringBoot如何选择最适合的传输质量&#xff1f; 在物联网和分布式系统架构中&#xff0c;消息传输的可靠性往往直接关系到业务逻辑的正确性。MQTT协议作为轻量级发布/订阅模式的通信标准&#xff0c;其QoS&#xff08;服务质量&#xff0…...

5分钟搞懂3GPP NTN标准:从Release16到19的关键技术演进与实战应用

5分钟搞懂3GPP NTN标准&#xff1a;从Release16到19的关键技术演进与实战应用 当全球通信行业将目光投向低轨卫星星座与高空平台时&#xff0c;3GPP的NTN&#xff08;非地面网络&#xff09;标准正在重塑连接边界。本文将以工程师视角&#xff0c;带您穿透技术文档迷雾&#xf…...

Unity引擎开发过的VR大场景项目网络技术,资源处理及热更新方案的报价大概多少

根据最新的市场招标数据、行业报价案例和技术方案分析&#xff0c;针对VR大场景项目的网络技术、资源处理、热更新方案三大模块的报价&#xff0c;整理如下&#xff1a;一、网络技术方案报价 网络技术方案主要解决多人在线同步、远程渲染、低延迟通信等问题。方案类型技术选型报…...

联想M920x黑苹果终极指南:从零构建完美macOS系统

联想M920x黑苹果终极指南&#xff1a;从零构建完美macOS系统 【免费下载链接】M920x-Hackintosh-EFI Hackintosh Opencore EFIs for M920x 项目地址: https://gitcode.com/gh_mirrors/m9/M920x-Hackintosh-EFI 你是否想让联想M920x这款紧凑型主机运行macOS系统&#xff…...

新手福音:免安装claude code,在快马平台开启你的ai编程第一课

作为一个刚接触编程的新手&#xff0c;最近想尝试用AI辅助写代码&#xff0c;但光是安装本地工具就让我头疼不已。直到发现了InsCode(快马)平台&#xff0c;才发现原来AI编程可以这么简单——不用配环境、不用解决依赖冲突&#xff0c;打开网页就能直接开玩。今天就把我的入门体…...

告别手动复制!用ArcGIS字段计算器(VB/Python)批量提取字段值的保姆级教程

ArcGIS字段计算器实战指南&#xff1a;VB与Python高效提取字段值的深度对比 在GIS数据处理工作中&#xff0c;属性表字段值的部分提取是最常见却又最耗时的操作之一。想象一下&#xff0c;当你面对一个包含上万条记录的"BSM"字段&#xff0c;需要提取前6位作为行政区…...

python基于微信小程序的旅游攻略分享平台

目录需求分析与功能规划技术架构设计数据库设计接口开发小程序前端开发部署与测试运营与迭代注意事项项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作需求分析与功能规划 明确平台核心功能&#xff1a;用户注册登录、攻略发布与…...