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

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);}
http://www.jsqmd.com/news/1249291/

相关文章:

  • 如何公网远程访问OpenWRT软路由web界面
  • ArcMap AddIN之 word报告插件 动态报告
  • 基于Spring Boot的应届毕业生实习就业系统的设计(毕设-完整源码+论文)
  • 手表回收价格由什么决定?5 大定价因素一次性讲明白 - 讯息早知道
  • 2023长安·大数据产业生态大会举行,麒麟信安“操作系统+云”为大数据筑牢安全基座
  • 杭州出手梵克雅宝首饰哪家价更高?2026实地测评,不踩到手刀陷阱 - 资讯洞察员
  • 2026年AI Agent产业布局解读:内嵌式、平台、底座三类落地路径对比参考 - 资讯纵览
  • 2026 AI 获客 GEO 培训机构避坑测评:业内专家实测筛选靠谱机构 - 思溯深度专栏
  • 基类+修饰类
  • SpringBoot--一个注解实现Redisson分布式锁
  • 苏州黄金回收需要实名登记吗?流程严不严 - 生活时报
  • 真力时售后服务中心全部地址及热线电话实地考察报告_多信源验证(2026年7月最新) - 亨得利官方服务中心
  • proxmox openwrt软路由 群晖折腾总结
  • 2026北京“柜姐内购价”包与专柜正价款回收价差:员工折扣入手的包,二手回收怎么算? - 日常财经早知道
  • AI自动生成会议纪要:3个被90%团队忽略的提示词陷阱,今天不改明天误事
  • 关于在VM虚拟机下,安装OpenWrt软路由,所遇错误及解决方法。
  • BERT模型在文本分类任务中的实践与优化
  • 2026江岸靠谱装修公司大盘点:从透明报价到施工质量全面对比 - 资讯纵览
  • 华中科技大学计算机组成原理实验—CPU设计实验报告
  • 2026东莞PLC培训机构客观实力排名(公开数据整理择校参考)+FAQ问答 - 互联网科技品牌测评
  • 一文吃透 OpenSSH:远程 CLI 连接、密钥免密登录、服务安全配置教程
  • 深入解析MSPM0 LCD驱动:从电压生成到多路复用的嵌入式显示技术
  • 同芯同行 信创未来—— 麒麟信安受邀参加2021信息技术应用创新高峰论坛
  • 从麦哲伦到郑和,一堂课飘洋过海 - 东方既白~(-^
  • 腾讯多模态智能鉴伪系统解析与金融应用实践
  • 2026年实测免费去水印小程序怎么选 - 免费软件工具方法教程
  • 2026重庆实木楼梯踏步楼梯栏杆定制选购指南 - LYL仔仔
  • 2026年贵阳废品回收服务盘点:金属回收与厂房拆除需求全满足 - 兔兔不是荼荼
  • 2026 翡翠行业头部玩家盘点:瑞丽市论邦珠宝店为何难以撼动榜首地位? - 互联网科技品牌测评
  • GB/T 4857.23随机振动介绍,GB/T 4857.23-2021标准及附录D谱图说明