本帖最后由 银河小铁骑 于 2026-8-29 11:01 编辑
STC32 IDE —— 面向 STC32 系列及 AI8051U 的编译 IDE,
支持 C11语言标准, 及部分 C23, 后续还会支持 STC8系列
STC IDE 是面向 STC32 系列(兼容 251 指令集)的纯浏览器C语言自研编译器 IDE:
打开网页即可编写 C 代码、编译生成 HEX、SWD 在线下载与调试,无需安装任何本地工具链,支持C11, 离线可用。
说明:STC32 系列 MCU 并非 Intel 251 内核,两者完全不同——Intel 251 是 8 位总线 + 32 位指令集,而 STC32 是 32 位总线 + 兼容 251 指令集。
本 IDE 的编译器正是基于 STC32 的 251 指令兼容特性自研实现,未来还可在此基础上扩展支持 RISC-V 等更多指令集。
一、主要优点- 完全开源免费:源码完全开源,免费使用,无需担心版权问题
- 官方原厂持续支持:由 STC 官方原厂持续更新维护
- 编译速度快至ms级:编译全部在浏览器本地完成,无网络等待、无服务器排队,点击即出结果
- 无需安装环境:不用装 Keil、不用配环境变量、不用管许可证,打开网页就能用
- 纯浏览器运行:代码不出本机,无隐私顾虑
- 离线可用:PWA 支持,加载一次后断网也能打开使用,在线时自动更新最新版本
- 内置 SWD 下载与调试:编译后一键差分下载烧录(仅烧录变动部分)、全速运行,支持硬件断点 / 单步 / 运行到光标与变量监视,浏览器直连设备
- 多文件支持:支持多 .c/.h 文件工程,文件夹导入保持原有目录结构,一键导入整个工程
- 自带例程:内置 25 个 STC 官方实验箱例程(跑马灯 / RTC / ADC / PWM / I2C / SPI 等),均已实机验证通过
- 纯中文界面:菜单、提示、编译信息全部中文,无语言门槛
- 完整编译输出:汇编列表 / Intel HEX / 预处理结果 / 资源占用报告 / 错误行号定位,一应俱全
二、已经实现的功能2.1 C 语言特性(基于 C11 语法,大部分特性已支持,支持部分C23特性)- 基础语法:变量、表达式、控制流(if/for/while/switch)、函数、数组、指针、宏、条件编译、include
- C11 特性(大部分):for 内声明、// 注释、复合字面量基础用法等按需支持
- 结构体与位域:struct / 位域 / 匿名位域、嵌套结构体成员访问
- 数据类型:8/16/32/64 位整型(含 long long)、float/double 软浮点(IEEE754)、32 位乘除(MDU32 硬件加速),0b0011类二进制字面量写法支持
- 编译期检查:数组越界、负数数组长度、实参个数、隐式窄化、移位超宽等问题编译期直接报错;支持 Keil _at_ 绝对地址定义
- 标准库:printf / sprintf / snprintf 编译器内联展开(%d/%u/%x/%c/%s/%f/%ld),常用数学库(sqrt/sin/cos 等软实现)
- 单片机扩展:
- sfr / sbit / xfr 特殊寄存器
- data / edata / xdata / code 存储类型
- bit 位变量
- 中断支持 interrupt N(向量表自动生成、ISR 现场保存、未用槽 RETI 保护)
- 内置头文件 STC32G.H / AI8051U.H / STC32G144K246.H(完整寄存器定义,支持用户覆盖)
2.2 编译器实现- ANTLR 语法分析 + 自研语义分析 + IR 中间表示 + 251 指令集(Source 模式)指令编码
- 优化较激进:常量折叠、死代码剔除、公共子表达式、字节组合直装、const 数组常量下标折叠、寄存器冲突精确判定等优化 Pass;大工程整体代码尺寸优于 Keil(30 个官方例程整体小约 15%),SFR/XFR 访问、中断向量表、短寄存器函数等场景超越 Keil;仅个别小函数仍可能略大于 Keil 最高激进优化
- 中文字符串按 GB2312 / UTF-8 可选编码嵌入 flash(默认嵌入GB2312,与 Keil 默认行为一致)
- 支持将核心代码编译为 .lib 库分发(保护源码)
2.3 Web IDE 功能- 代码编辑(CodeMirror:语法高亮 / 自动补全 / 括号匹配)
- 多文件管理:新建 / 重命名 / 删除 / 导入文件 / 导入文件夹(保持目录结构) / 本地保存工程
- 一键编译 + 输出面板(汇编 / HEX / 预处理 / 资源报告 / 编译信息,错误行号点击跳转定位)
- SWD 下载调试:差分下载 / 全速运行(F8)/ 暂停 / 硬件断点 / 单步 / 运行到光标;调试面板变量监视(右键「添加到监视」)与寄存器查看;连接后自动识别芯片型号;可设「编译后自动 SWD 下载并运行」
- 内置头文件查看:文件菜单一键查看 STC32G.H 等内置头文件(只读渲染、型号切换、一键复制)
- AI 协作接口:window.ai_ctrl 自描述方法表(help() / getState()),其他的AI 助手可读写文件、编译、查询编译结果、控制 SWD 调试
- HEX 下载(可自定义文件名)
- 示例列表(25 个实验箱验证例程)
- 中英文界面自动切换、中文编码设置
- PWA 离线缓存
2.4 实机验证情况- 实验箱 26 个官方例程全部编译通过(01.2 跑马灯 ~ 45 内部 RTC),其中 25 个内置为示例
- 45 例程(RTC)实机验证:RTC 中断正确使用 interrupt 36(STC32G RTC 中断向量号),显示动态、秒位跳动、串口 printf 输出正常
- SWD 实机验证:差分下载、全速运行、硬件断点 / 单步 / 运行到光标、变量监视均经实验箱验证通过
- 回归测试全绿:52/52 指令级 + 94/94 用例级 + 45/45 例程级 + 42/42 附加用例,内置 25 例程编译 25/25
- 数学库、结构体位域、static 局部变量、指针 cast、浮点除法 / 浮点常量折叠、中断嵌套等均经实机验证
三、暂未实现的功能(已知限制)[td]
| 项 | 现状 | reentrant 关键字 | 未实现(重入函数已通过自动副本方式支持) | Keil 工程(.uvproj)解析 | 不支持;多文件工程直接用「导入文件夹」一键导入全部 .c/.h 即可 | 块级作用域 | for 循环变量按函数级分配(无块作用域隔离) | C11 完整支持 | 语法基于 C11(ANTLR C11 文法),但尚未覆盖全部 C11 特性(如 _Generic、可变参数宏等),常用子集已可用 | printf %f 精度 | 浮点输出精度有限(简单小数场景可用) | SWD 调试环境 | 需 Chrome/Edge 等支持 WebHID/WebUSB 的浏览器,首次连接需在页面点击授权;硬件断点为逻辑单断点(STC32G 最多 8 个) |
持续迭代中,以上限制将逐步补齐。 四、使用教程
1. 加载例程点击右上角「示例」按钮,从列表中选择任意实验箱例程即可加载。推荐先试: - 01.2-用P6口做跑马灯(最简入门)
- 45-内部RTC时钟程序(RTC + 中断 + 数码管 + 串口打印,综合示例)
2. 编写 / 导入代码- 直接编辑:在编辑器中修改代码
- 导入文件:文件 → 导入文件(Ctrl+O)选择 .c/.h
- 导入文件夹:文件 → 导入文件夹,选择工程目录(多文件工程一键导入,保持原有目录结构)
- 保存工程:文件 → 保存工程(存到浏览器本地,下次打开自动恢复)
3. 编译点击「编译」按钮(或 F7): - 成功:下方输出面板显示汇编 / HEX / 资源报告(edata / xdata / code 占用)
- 失败:「编译信息」标签页显示错误行号与原因,点击可跳转定位
4. 下载 HEX 并烧录方式一:IDE 内置 SWD 下载(推荐) - 调试面板点击「连接」——首次需在页面点击授权设备(Chrome/Edge 支持 WebHID/WebUSB 即可)
- 编译成功后点击右上角「运行」按钮(或按 F8)→ 自动差分下载并全速运行
- 也可在 设置 → SWD 调试 中开启「编译后自动 SWD 下载并运行」
方式二:HEX + STC-ISP - 编译成功后点击「HEX」按钮下载 .hex 文件
- 打开 STC-ISP 下载软件,选择芯片 STC32G12K128、主频 24MHz
- 选择下载的 HEX → 点击下载 → 实验箱自动断电上电烧录
5. 调试连接 SWD 后: - 点击代码行号左侧设置断点 → 点「运行」运行到断点自动暂停
- 暂停后可单步执行 / 继续运行,或在代码上右键「运行到此处」
- 调试面板可查看寄存器与全局变量(右键「添加到监视」/ 一键导入全部),值变化自动高亮
6. 串口调试例程的 printf 输出: - PrintUart=2:串口 2(P4.6/P4.7)@115200
- PrintUart=1:串口 1(P3.0/P3.1)@115200
用串口助手连接对应引脚即可看到输出(如 RTC 例程每秒打印 Year=2021,Month=12,...)。 7. 其他设置- 设置 → 中文编码:字符串嵌入 flash 的编码(GB2312 默认 / UTF-8)
- 文件 → 保存到文件夹:导出工程文件到本地磁盘
五、技术参数[td]
| 项 | 值 | 目标芯片 | STC32G12K128 / STC32G8K64 / AI8051U / STC32G144K246(兼容 251 指令集) | 总线架构 | 32 位总线(非 Intel 251 的 8 位总线) | 字节序 | 大端(251 规范) | 代码存储 | Flash 最大 246KB(12K128 为 128KB,0xFE0000 ~ 0xFFFFFF) | 数据存储 | edata 最大 16KB / xdata 最大 128KB(12K128:edata 4KB / xdata 8KB) | 复位入口 | 0xFF0000 | 发布包大小 | 约 680KB(含 25 例程) | 浏览器 | Chrome / Edge 等现代浏览器(SWD 需支持 WebHID/WebUSB) |
STC IDE 由自研 STC32 系列编译器项目驱动(251 指令兼容,后续可扩展 RISC-V),持续迭代中。欢迎反馈问题与建议。
|