在使用 VS Code 和 Keil 协同开发 STM32 程序

在使用 VS CodeKeil 协同开发 STM32 程序时,可以利用 Keil 强大的编译器VS Code 的高效代码编辑功能,结合起来提高开发效率。以下是实现协同开发的详细步骤:

前置准备
安装 Keil
确保已安装 Keil MDK-ARM,并配置好开发环境。
Keil 下载地址:Keil 官方网站
安装 VS Code
下载并安装最新版本的 VS CodeVS Code 官网
安装 ARM Compiler
Keil 自带 ARM Compiler,可以直接使用。如果需要单独安装,确保与 Keil 的版本匹配。

步骤一:配置 Keil 项目
新建或打开 Keil 项目
使用 Keil MDK 创建 STM32 项目,并完成初步配置(包括目标设备、外设库等)。
生成项目工程文件
在 Keil 中保存项目文件(如 *.uvprojx*.uvproj 文件)。
找到编译器路径
确认 Keil 使用的 ARM 编译器路径,通常位于:makefile

C:\Keil_v5\ARM\ARMCC\bin

C:\Keil_v5\ARM\ARMCLANG\bin

步骤二:在 VS Code 中配置项目
安装 VS Code 扩展
打开 VS Code,安装以下扩展:C/C++(Microsoft 提供)
Cortex-Debug
ARM Assembly
打开项目文件夹
使用 VS Code 打开 Keil 项目所在的文件夹。
配置 C/C++ Intellisense
在项目根目录下创建或编辑 c_cpp_properties.json

{
  "configurations": [
    {
      "name": "Keil STM32",
      "includePath": [
        "${workspaceFolder}/**",
        "C:/Keil_v5/ARM/ARMCC/include"
      ],
      "defines": [
        "STM32F103xB", // 根据你的芯片型号修改
        "__MICROLIB"
      ],
      "compilerPath": "C:/Keil_v5/ARM/ARMCC/bin/armcc.exe",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "intelliSenseMode": "gcc-arm"
    }
  ],
  "version": 4
}

添加调试配置

  • .vscode 文件夹下创建或编辑 launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Cortex Debug",
      "type": "cortex-debug",
      "request": "launch",
      "servertype": "openocd",
      "cwd": "${workspaceFolder}",
      "executable": "${workspaceFolder}/build/your_project.elf", // 替换为你的 ELF 文件路径
      "device": "STM32F103C8", // 替换为你的设备型号
      "configFiles": [
        "interface/stlink.cfg",
        "target/stm32f1x.cfg"
      ]
    }
  ]
}

步骤三:同步编辑和编译
在 VS Code 中编辑代码
使用 VS Code 的语法高亮和 Intellisense 快速编写代码。
注意:代码文件的目录结构需与 Keil 项目保持一致。
在 Keil 中编译
编辑完成后,切换到 Keil,点击 Build 按钮完成代码编译。
设置自动同步
如果频繁切换文件,可借助 VS Code 的终端执行 build.bat,以实现自动调用 Keil 的编译器。
示例 build.bat 文件:

@echo off
set KEIL_PATH=C:\Keil_v5
"%KEIL_PATH%\UV4\UV4.exe" -b your_project.uvprojx -o build.log

步骤四:调试与烧录
在 Keil 中烧录程序
Keil 提供直接烧录支持,连接调试器(如 ST-Link)后,可以直接下载代码到设备。
在 VS Code 中调试
配置 launch.json 后,点击调试按钮,可以使用 Cortex-Debug 扩展进行调试。

步骤五:优化工作流(可选)
结合 CMake
如果希望完全脱离 Keil 的 UI,可以将 Keil 的工程文件转为 CMake 项目,直接在 VS Code 中完成所有构建工作。
Makefile 集成
通过 Makefile 或 Ninja 构建系统调用 Keil 的编译工具链,实现自动化构建。
Git 管理代码
使用 Git 管理项目版本,可以在 VS Code 的 Source Control 面板中方便地提交和管理代码。

通过以上配置,你就可以实现 VS Code 和 Keil 的高效协同开发,既利用了 Keil 强大的编译器和烧录能力,又享受了 VS Code 出色的编辑体验!

发布者:myrgd,转载请注明出处:https://www.object-c.cn/5005

Like (0)
Previous 2024年12月1日 下午1:40
Next 2024年12月2日 上午11:43

相关推荐

  • 若依集成 X-File-Storage 框架(实现图片上传阿里云 OSS 服务器)

    若依(Ruoyi)是一款基于 Spring Boot 的企业级开发框架,在此框架中集成 X-File-Storage 框架来实现图片上传到阿里云 OSS(对象存储服务)是一个常见的需求。通过这个集成,你可以便捷地将图片或文件上传到阿里云 OSS,并在系统中管理和访问这些文件。以下是详细的步骤说明: 1. 安装 X-File-Storage 框架 X-File…

    2024年11月25日
    00
  • 使用 CLion 编写 C51 (即8051微控制器) 程序时,遇到 sbit 相关报错

    在使用 CLion 编写 C51 (即8051微控制器) 程序时,遇到 sbit 相关报错,通常是因为 CLion 默认并不支持8051的特殊语法和寄存器定义方式。sbit 是 C51 编译器中的一个关键字,用来将一个单独的位(bit)映射到特定的硬件寄存器或端口引脚。常见的报错及解决方法sbit 语法问题: CLion 本身不支持 C51 特有的语法,sb…

    2024年11月27日
    00
  • 使用 CasaOS 搭建 Lsky Pro(兰空图床)快速实现图床的项目部署

    使用 CasaOS 搭建 Lsky Pro(兰空图床)可以快速实现图床的部署,并通过 Docker 管理其运行环境。以下是详细步骤,包括远程管理图片的设置。 一、环境准备 3. 配置域名(可选)如果需要远程管理图片,建议配置域名和 HTTPS,方便图床在线使用。 二、Docker 部署 Lsky Pro 1. 获取 Lsky Pro Docker 镜像 运行…

    2024年11月23日
    00
  • 使用 Docker 中 cgroups 资源控制的实战教程

    使用 Docker 的 cgroups(control groups)功能,可以对容器的资源使用进行精确控制,例如限制 CPU、内存、IO 和网络带宽等。以下是 Docker 中 cgroups 资源控制的实战教程。 一、Docker 支持的资源限制 1. CPU 相关 2. 内存相关 3. IO 相关 二、常见资源限制命令 1. 限制 CPU 使用 示例:…

    2024年11月23日
    00
  • 使用 OpenVPN 将多个局域网互联的一种配置方案

    使用 OpenVPN 将多个局域网互联是一个常见需求,尤其是在远程办公或多地分支机构互联场景下。以下是一种基于 OpenVPN 的配置方案,旨在实现多个局域网的互联。 场景说明 网络拓扑图 配置步骤 1. 安装 OpenVPN 在所有相关设备上安装 OpenVPN。以下以 Linux 为例: 2. 配置 OpenVPN 服务器 创建服务器配置文件 编辑 /e…

    2024年12月7日
    00
  • 在 Spring Boot 中实现定时任务,通过 Spring Task Scheduling 来完成

    在 Spring Boot 中实现定时任务,可以通过 Spring Task Scheduling 来轻松完成。Spring 提供了多种方法来调度任务,其中使用 @Scheduled 注解是最常见且简单的方式。 步骤:在 Spring Boot 中实现定时任务 1. 启用定时任务 首先,确保在 Spring Boot 应用的主类或配置类中启用定时任务功能: …

    2024年11月26日
    00
  • VMware Workstation 17 Pro 中安装 macOS 虚拟机

    在 VMware Workstation 17 Pro 中安装 macOS 虚拟机需要一些额外的步骤,因为 VMware 默认不支持直接安装 macOS 系统。以下是完整的教程,帮助你在 VMware 中成功安装 macOS。 一、准备工作 1. 所需资源 二、安装 VMware 并解锁 macOS 支持 1. 安装 VMware Workstation 2…

    2024年11月23日
    00
  • 在 Ubuntu 16.04 上使用 GitLab CI 设置持续集成 (CI) 流水线步骤

    在 Ubuntu 16.04 上使用 GitLab CI 设置持续集成 (CI) 流水线需要完成以下步骤。GitLab CI/CD 是一个强大的工具,可以自动化代码测试、构建和部署。 步骤 1:安装 GitLab RunnerGitLab Runner 是用于执行 GitLab CI 流水线任务的工具。安装必要的软件包 添加 GitLab Runner 的官…

    操作系统 2024年12月2日
    00
  • Windows 远程桌面连接时出现报错 “由于没有远程桌面授权服务器可以提供许可证” 的问题

    Windows 远程桌面连接时出现报错 “由于没有远程桌面授权服务器可以提供许可证” 的问题,通常是由于以下原因之一: 以下是解决该问题的步骤: 1. 删除客户端缓存的许可证远程桌面客户端会缓存许可证信息,可能会因为缓存问题导致连接失败。操作步骤:打开本地计算机的 注册表编辑器:按下 Win + R,输入 regedit,回车。导航到以下路径: 删除 MSL…

    2024年11月28日
    00
  • 在 MacOS 上开启 HIDPI 模式的多种方案

    在 MacOS 上开启 HIDPI 模式可以帮助提升显示器的清晰度,尤其是在使用 Retina 屏幕时。以下是几种常见的方案:1. 通过终端命令启用 HIDPI 模式打开 终端 (Terminal)。输入以下命令: 然后重启 Mac,或者注销当前用户并重新登录。这将启用隐藏的高分辨率模式。2. 通过 SwitchResX 工具SwitchResX 是一个强大…

    2024年11月27日
    00
  • 如何用pbootcmsAPI接口开发微信小程序UNIAPP

    使用 PbootCMS 的 API 接口结合 UniApp 开发微信小程序,可以实现高效的内容管理和展示。以下是一个完整的开发流程,包括 API 接口设置、小程序功能设计和开发细节。 1. 准备工作1.1 配置 PbootCMS API 接口PbootCMS 提供 API 功能,需在后台开启并配置:登录 PbootCMS 后台管理。前往 系统管理 -> AP…

    2024年11月28日
    00
  • 在Java中 ArrayList 和 LinkedList 实现 List 接口类

    在Java中,ArrayList 和 LinkedList 都是实现了 List 接口的类,但它们在底层实现和使用场景上有显著的区别。以下是它们的主要区别: 1. 底层实现ArrayList基于动态数组实现。元素是连续存储的,每个元素都可以通过索引直接访问。LinkedList基于双向链表实现。每个元素由节点(Node)存储,节点包含数据和前后节点的引用。 …

    2024年12月2日
    00
  • 在 Mac 上,Google Chrome 无法打开网页的问题

    在 Mac 上,Google Chrome 无法打开网页可能由多个因素引起。以下是一些常见的原因及解决方法: 1. 检查网络连接 确保你的 Mac 已连接到互联网,尝试使用其他设备(如手机或其他电脑)打开相同的网页,确认问题是否出在设备本身或网络。 2. 清除浏览器缓存和历史记录 长期积累的缓存和浏览数据可能导致加载问题。尝试清除缓存和历史记录: 3. 禁用…

    2024年11月23日
    00
  • 在Ubuntu上安装RabbitMQ 的简单过程

    在Ubuntu上安装RabbitMQ是一个简单的过程,以下是详细步骤: 1. 更新系统包 2. 添加 RabbitMQ 和 Erlang 的官方存储库 RabbitMQ 依赖于 Erlang,因此需要确保安装正确版本的 Erlang。 2.1. 安装必要的依赖项 2.2. 添加 Erlang 存储库 2.3. 添加 RabbitMQ 存储库 3. 更新包列表…

    2024年11月22日
    00
  • 开发中如何在HarmonyOS NEXT中处理页面间的数据传递的

    在 HarmonyOS NEXT 中,页面间的数据传递是应用开发中的一个常见需求。HarmonyOS 提供了多种方法来实现页面间的数据传递,通常包括 通过 Intent(隐式和显式)传递数据、通过路由传递数据、以及使用 全局状态管理。下面将介绍几种常用的处理方式。1. 使用 Ability 和 Intent 传递数据在 HarmonyOS 中,每个页面都是一…

    2024年11月29日
    00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

在线咨询: QQ交谈

邮件:723923060@qq.com

关注微信