news 2026/7/23 18:02:18

Keil C51工程转VSCode Keil Assistant开发全过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Keil C51工程转VSCode Keil Assistant开发全过程

Keil C51工程转VSCode Keil Assistant开发全过程


  • ✨这里以stc15W408AS为例。
  • 📌相关篇《【开源分享】自制STC15W408AS开发板》
  • 📺编译-烧录演示:
  • ✨目前Keil Assistant插件已经停止更新,但是还是可以继续使用。基本可以满足一般的需求。只不过使用VSCode加载新的MDK(Keil)工程项目需要手动指定Keil工程.现在有可替代的插件就是Keil Assistant Community Fork(发布者:candycium)插件,在Keil项目文件内,使用VSCode打开后,该插件可以自动识别 C51/ARM 项目类型,无需再手动指定项目。
  • 该插件亮点功能 ✨

智能项目搜索:打开工作区后自动检测并加载 Keil 项目,无需手动查找
一键式编译体验:全新的状态栏按钮设计,编译、重编译、下载一键完成
多核心并行编译:自动检测 CPU 核心数,充分利用系统性能,显著提升编译速度
智能项目类型识别:自动识别 C51/ARM 项目类型,优化编译配置
跨模块优化支持:支持 Cross-Module-Optimization,提供更好的代码优化效果
性能提升 🚀
编译速度提升高达 300%(在 8 核心 CPU 上测试)
项目加载时间减少 50%
内存占用优化,降低 30%

  • 🔖其它功能相似插件:Keil uVision Assistant
📋转VSCODE开发环境主要原因可能代码提示以及代码跳转功能,或者其他。
  • 🌿代码提示功能:
  • 🌿代码跳转功能

✅Keil C51工程转VSCode准备实施条件

  1. 电脑端已经实现了Keil C51开发。
  2. 电脑端已经安装了VSCODE软件。
  3. 电脑端已经安装了python。

🚩VSCode配置过程

  1. 在VSCode里面安装Keil Assistant插件。
  2. 给Keil Assistant插件配置Keil软件安装绝对路径。


3. 依赖C\C++插件

  • 🔧stcgal烧录工具安装:(依赖python pip):pip install stcgal

🌻Keil工程转VSCODE

  1. 在转入到VSCODE前,先在Keil软件中将工程创建起来,并勾选生成HEX选项。

  2. 编译一遍,让其生成HEX的路径:creating hex file from ".\Objects\STC_Printf"...

  3. 在工程文件夹内,右键,选择通过VSCODE打开

  4. 添加头文件路径。

  • 🔰如果是第一次打开,显示波浪线,点击小灯泡,选择编辑includePath设置。

  • 🔨编译工程

  • 🛠命令行烧录

stcgal-p COM10-P stc15.\Objects\STC_Printf.hex 或者 stcgal-a-p COM10-P stc15.\Objects\STC_Printf.hex//-a 用来控制串口芯片DTR 引脚让目标芯片复位,如果目标芯片启用了外部复位引脚P54时,可以手动按复位按键后,即可进入下载阶段。

  • -p COM10:串口端口号;
  • -P stc15:烧录目标芯片型号;
  • .\Objects\STC_Printf.hex:烧录文件路径。
    • 🗝烧录命令:stcgal -p COM10 -P stc15 .\Objects\STC_Printf.hex

⚡如果你的目标板没有实现UART DTR 流控制(不带免冷启动电路),看到Wait for mcu, please cycle power:之后,这是在提示你:请手动复位 mcu,让单片机进入 isp 模式
    • 🔑烧录命令:stcgal -a -p COM10 -P stc15 .\Objects\STC_Printf.hex
⚡如果你的目标板实现了UART DTR 流控制(带免冷启动电路),就不要添加带-a的参数,不然还需要去复位一次单片机,看到Waiting for MCU:之后,这是在提示你:请手动复位 mcu,让单片机进入 isp 模式;需要手动去复位或者重启目标板。(可参考前面的相关开源开发板电路,了解STC免冷启动电路设计)

  • 📓stcgal命令行使用帮助
C:\Users\Administrator>stcgal-h usage:stcgal[-h][-a][-r RESETCMD][-P{stc89,stc12a,stc12b,stc12,stc15a,stc15,stc8,usb15,auto}][-p PORT][-b BAUD][-l HANDSHAKE][-o OPTION][-t TRIM][-D][-V][code_image][eeprom_image]stcgal1.6-an STC MCU ISP flashtool(C)2014-2018Grigori Goronzy and others https://github.com/grigorig/stcgalpositional arguments:code_image code segment file toflash(BIN/HEX)eeprom_image eeprom segment file toflash(BIN/HEX)options:-h,--help show this help message and exit-a,--autoreset cycle power automatically by asserting DTR-r RESETCMD,--resetcmd RESETCMD shell commandforboard power-cycling(instead of DTR assertion)-P{stc89,stc12a,stc12b,stc12,stc15a,stc15,stc8,usb15,auto},--protocol{stc89,stc12a,stc12b,stc12,stc15a,stc15,stc8,usb15,auto}protocolversion(default:auto)-p PORT,--port PORT serial port device-b BAUD,--baud BAUD transfer baudrate(default:19200)-l HANDSHAKE,--handshake HANDSHAKE handshake baudrate(default:2400)-o OPTION,--option OPTION setoption(can be used multiple times,see documentation)-t TRIM,--trim TRIM RC oscillator frequency inkHz(STC15+series only)-D,--debug enable debug output-V,--version print version info and exit

⛳注意事项

  • 🍁在Keil工程中,设置里面如果没有勾选生成HEX文件选项,那么在VSCODE里面,编译时也不会生成Hex文件的,本质上,在VSCODE里面,编译还是调用的Keil软件本身。

🌼测试工程

  • 🔖基于stc15w408as单片机。
//STC15W408AS,512字节的RAM,8K FLASH//晶振频率:11.0592MHz//波特率:115200//stcgal -p COM10 -P stc15 .\Objects\STC_Printf.hex#include<STC15F2K60S2.H>#include"intrins.h"#include"stdio.h"bit busy;//#define FOSC 11059200UL//#define BAUD 115200//sfr P_SW1 = 0xA2; //外设功能切换寄存器1#defineS1_S00x40//P_SW1.6#defineS1_S10x80//P_SW1.7voidDelay500ms();voidUartInit(void);//115200bps@11.0592MHzvoidSendData(unsignedchardat);voidSendString(char*s);voidmain(){P1M0=0x00;P1M1=0x00;P3M0=0x00;P3M1=0x00;UartInit();Delay500ms();SendString("STC15F2K60S2\r\nUart Test !\r\n");while(1){P17=0x01;Delay500ms();printf("stcgal Tool Programmer \n\r");P17=0x00;Delay500ms();printf("Hello World \r\n");// SendString("STC15F2K60S2\r\nUart Test !\r\n");Delay500ms();printf("perseverance51 \n\r");}}voidUartInit(void)//115200bps@11.0592MHz{SCON=0x50;//8位数据,可变波特率AUXR|=0x01;//串口1选择定时器2为波特率发生器AUXR&=0xFB;//定时器时钟12T模式T2L=0xFE;//设置定时初始值T2H=0xFF;//设置定时初始值AUXR|=0x10;//定时器2开始计时}/*---------------------------- 发送串口数据 ----------------------------*/voidSendData(unsignedchardat){SBUF=dat;while(!TI);//等待前一个数据发送完成TI=0;//清除发送标志}charputchar(chardat){SendData(dat);returndat;}/*---------------------------- 发送字符串 ----------------------------*/voidSendString(char*s){while(*s)//检测字符串结束标志{SendData(*s++);//发送当前字符}}voidDelay500ms()//@11.0592MHz{unsignedchari,j,k;_nop_();_nop_();i=22;j=36;k=227;do{do{while(--k);}while(--j);}while(--i);}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 18:00:58

LangChain从入门到实战(2026版)

1. LangChain 简介与核心概念LangChain 是一个用于构建基于大语言模型&#xff08;LLM&#xff09;应用程序的开源框架。它通过提供模块化组件和链式调用机制&#xff0c;简化了 LLM 应用开发的复杂性&#xff0c;让开发者能够更高效地构建智能代理、问答系统、文档分析等应用。…

作者头像 李华
网站建设 2026/7/23 17:59:39

AI气象大模型如何优化企业现金流预测

1. 项目概述&#xff1a;AI气象大模型如何重塑企业现金流预测去年夏天&#xff0c;某连锁超市因为一场突发的暴雨损失惨重——提前备货的300吨西瓜因运输延误全部烂在仓库。而隔壁采用AI气象预测的竞争对手&#xff0c;却提前72小时调整了采购计划。这个真实案例揭示了现代企业…

作者头像 李华
网站建设 2026/7/23 17:59:34

fastadmin后台中文章分类ID改为名称显示

fastadmin后台中文章分类ID改为名称显示 首先找到你当前的文章类后台控制器。 一般在application/admin/controller 下面 先添加模型 use app\admin\model\zsw\Type as ZswTypeModel;然后覆盖index方法 public function index() { //设置过滤方法 $this…

作者头像 李华
网站建设 2026/7/23 17:59:09

每天省下2.4小时的AI办公组合拳:微软Power Automate×钉钉智能体×本地化知识库(限免调试包仅开放72小时)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI办公自动化的核心价值与落地瓶颈 AI办公自动化正从概念验证快速迈向规模化应用&#xff0c;其核心价值在于重构人机协作范式——将重复性高、规则明确、跨系统协同频繁的办公任务交由AI代理持续执行&…

作者头像 李华
网站建设 2026/7/23 17:58:15

Git Stash 与本地 Commit 有什么区别?

对比项git stashgit commit&#xff08;不 push&#xff09;主要用途临时切分支、临时处理中断稳定保存一个开发阶段是否属于分支历史不属于分支提交历史属于当前分支历史是否上传远端不会不会&#xff0c;除非执行 git push下次恢复git stash apply/popgit switch 分支名恢复顺…

作者头像 李华
网站建设 2026/7/23 17:56:23

MCP与Skill技术:AI任务执行的革命性突破

1. 从语言理解到任务执行&#xff1a;MCP与Skill的技术革命三年前我第一次用GPT-3写周报时&#xff0c;就被它流畅的语言能力震撼了——直到我让它帮我改个Excel表格。那时才明白&#xff0c;会说和会做之间&#xff0c;隔着一道马里亚纳海沟。如今MCP&#xff08;Model Contex…

作者头像 李华