Keil C51工程转VSCode Keil Assistant开发全过程
Keil C51工程转VSCode Keil Assistant开发全过程✨这里以stc15W408AS为例。相关篇《【开源分享】自制STC15W408AS开发板》编译-烧录演示✨目前Keil Assistant插件已经停止更新但是还是可以继续使用。基本可以满足一般的需求。只不过使用VSCode加载新的MDKKeil工程项目需要手动指定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准备实施条件电脑端已经实现了Keil C51开发。电脑端已经安装了VSCODE软件。电脑端已经安装了python。VSCode配置过程在VSCode里面安装Keil Assistant插件。给Keil Assistant插件配置Keil软件安装绝对路径。3. 依赖C\C插件stcgal烧录工具安装依赖python pippip install stcgalKeil工程转VSCODE在转入到VSCODE前先在Keil软件中将工程创建起来并勾选生成HEX选项。编译一遍让其生成HEX的路径creating hex file from .\Objects\STC_Printf...在工程文件夹内右键选择通过VSCODE打开。添加头文件路径。如果是第一次打开显示波浪线点击小灯泡选择编辑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\Administratorstcgal-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(STC15series only)-D,--debug enable debug output-V,--version print version info and exit⛳注意事项在Keil工程中设置里面如果没有勾选生成HEX文件选项那么在VSCODE里面编译时也不会生成Hex文件的本质上在VSCODE里面编译还是调用的Keil软件本身。测试工程基于stc15w408as单片机。//STC15W408AS512字节的RAM8K FLASH//晶振频率11.0592MHz//波特率115200//stcgal -p COM10 -P stc15 .\Objects\STC_Printf.hex#includeSTC15F2K60S2.H#includeintrins.h#includestdio.hbit busy;//#define FOSC 11059200UL//#define BAUD 115200//sfr P_SW1 0xA2; //外设功能切换寄存器1#defineS1_S00x40//P_SW1.6#defineS1_S10x80//P_SW1.7voidDelay500ms();voidUartInit(void);//115200bps11.0592MHzvoidSendData(unsignedchardat);voidSendString(char*s);voidmain(){P1M00x00;P1M10x00;P3M00x00;P3M10x00;UartInit();Delay500ms();SendString(STC15F2K60S2\r\nUart Test !\r\n);while(1){P170x01;Delay500ms();printf(stcgal Tool Programmer \n\r);P170x00;Delay500ms();printf(Hello World \r\n);// SendString(STC15F2K60S2\r\nUart Test !\r\n);Delay500ms();printf(perseverance51 \n\r);}}voidUartInit(void)//115200bps11.0592MHz{SCON0x50;//8位数据,可变波特率AUXR|0x01;//串口1选择定时器2为波特率发生器AUXR0xFB;//定时器时钟12T模式T2L0xFE;//设置定时初始值T2H0xFF;//设置定时初始值AUXR|0x10;//定时器2开始计时}/*---------------------------- 发送串口数据 ----------------------------*/voidSendData(unsignedchardat){SBUFdat;while(!TI);//等待前一个数据发送完成TI0;//清除发送标志}charputchar(chardat){SendData(dat);returndat;}/*---------------------------- 发送字符串 ----------------------------*/voidSendString(char*s){while(*s)//检测字符串结束标志{SendData(*s);//发送当前字符}}voidDelay500ms()//11.0592MHz{unsignedchari,j,k;_nop_();_nop_();i22;j36;k227;do{do{while(--k);}while(--j);}while(--i);}

相关新闻

鸿蒙三方库 | harmony-utils之NotificationUtil长文本与多行通知详解

鸿蒙三方库 | harmony-utils之NotificationUtil长文本与多行通知详解

前言 当通知内容较多时,基本通知的显示空间有限。HarmonyOS支持长文本和多行通知样式,可以展示更多内容。pura/harmony-utils 的 NotificationUtil 封装了长文本通知发送方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解&…

2026/10/1 9:24:47 阅读更多 →
鸿蒙三方库 | harmony-utils之NotificationUtil基本通知发送详解

鸿蒙三方库 | harmony-utils之NotificationUtil基本通知发送详解

前言 通知是应用与用户沟通的重要渠道,用于消息提醒、进度展示等。pura/harmony-utils 的 NotificationUtil 封装了通知发送方法,支持基本文本通知。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握…

2026/10/11 14:43:05 阅读更多 →
SpringCloud:SpringCloudGateway对Forwarded和X-Forwarded-*处理分析

SpringCloud:SpringCloudGateway对Forwarded和X-Forwarded-*处理分析

一、SpringCloudGateway作为服务器端1、在接收到包含Forwarded或X-Forwarded-*的HTTP请求头时,会根据部署环境决定是否进行解析根据部署环境决定是否进行解析的代码可以如下类中找到:org.springframework.boot.autoconfigure.web.embedded.NettyWebServe…

2026/10/11 5:14:49 阅读更多 →

最新新闻

算法概览图:用拓扑建模实现原理级动画可视化

算法概览图:用拓扑建模实现原理级动画可视化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:08:04 阅读更多 →
基于ESP8285与MQTT的远程电机控制器开发全攻略

基于ESP8285与MQTT的远程电机控制器开发全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:08:04 阅读更多 →
工业控制系统国产化落地指南:全栈平台迁移路径与工程避坑实践

工业控制系统国产化落地指南:全栈平台迁移路径与工程避坑实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:08:04 阅读更多 →
Cloud 3.0架构演进:异构调度、数据一致性与能力成本三大挑战

Cloud 3.0架构演进:异构调度、数据一致性与能力成本三大挑战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:08:04 阅读更多 →
无人驾驶Frenet坐标系:从数学原理到工程落地全解析

无人驾驶Frenet坐标系:从数学原理到工程落地全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:08:04 阅读更多 →
Python第3章练习题解析:数据类型、字符串与格式化输出避坑指南

Python第3章练习题解析:数据类型、字符串与格式化输出避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:07:04 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →