最新版本 v1.3.0 · 支持 float32

PF-code

为单片机而生的
嵌入式脚本语言

熟悉的 C 风格语法,挂进现有固件即可运行。业务逻辑可单独下发更新,不必每次整包重烧。当前已支持整数与 浮点运算

查看使用流程

核心特性

解决单片机业务逻辑僵化、更新麻烦的问题,用更少的资源换更灵活的交付。

极度轻量

运行时不向系统申请堆内存,由宿主持有栈与全局区,适合低成本 MCU。

C 语言语法

熟悉的写法即可上手:整数、浮点、数组、循环判断,以及调用 C 接口。

非侵入式集成

按 1ms 节拍协作步进,不抢占主循环,原有实时与通信任务照常运行。

强大的 FFI

脚本直接调用已注册的 C 函数,读写传感器与线圈,打通业务与驱动。

使用流程

从编写脚本到设备上协作运行,六步走完整条链路。

  1. 01

    编写脚本

    用 C 风格写 .pf 业务逻辑

  2. 02

    主机编译

    pfcc 生成紧凑字节码

  3. 03

    动态下发

    经串口 / CAN / 无线送到设备

  4. 04

    加载启动

    虚拟机装载并开始调度

  5. 05

    协作步进

    1ms 节拍执行,sleep 让出 CPU

  6. 06

    硬件交互

    经 FFI 读写传感器与 IO

当前步骤

编写脚本

在电脑上用熟悉的 C 语法编写业务:循环、分支、浮点与调用宿主函数。

工作原理与架构

采用「电脑编译、单片机执行」的分离方式:复杂编译留在 PC,MCU 只需轻量虚拟机按节拍跑脚本。

  1. 编写与编译

    在电脑上用 C 风格编写脚本,编译成紧凑字节码,体积往往只有几十到几百字节。

  2. 动态下发

    经串口、CAN、蓝牙或 Wi‑Fi 把字节码送到设备,即可更新业务逻辑,无需整包重刷固件内核。

  3. 协作式执行

    设备内虚拟机按时间片推进;遇到休眠指令会主动让出 CPU,保证主循环实时性。

  4. 原生交互

    通过外部函数接口调用 GPIO、传感器、打印等宿主能力,软硬件一体。

logic.pf · 业务脚本
// 传感器超限则告警亮灯
void main() {
    int val;
    int threshold = 500;
    while (1) {
        val = sensor(0, 0);
        if (val > threshold) {
            set_bit(1, 1);
        } else {
            set_bit(1, 0);
        }
        sleep(100);
    }
}
firmware.c · 宿主固件
/* 主循环保持实时任务,顺带推进脚本 */
while (1) {
    Motor_Loop();
    Protocol_Process();
    pf_tick_1ms();
    Delay_ms(1);
}

v1.3.0 新能力

本版重点增强浮点支持,适合滤波、阈值与比例计算等场景。

浮点运算

支持 float 变量与字面量,加减乘除、比较与类型转换一手齐。

浮点打印

新增打印浮点结果的接口,调试滤波与标定更直观。

配套完整

编译器与运行时同版本发布,下载一份即可配套使用。

继承强化

继续支持类型别名、数组指针、自增自减与三元等常用写法。

版本历程

每一次发布都在补齐嵌入式现场真正需要的能力。

  1. 1.3.02026-07-15

    浮点能力

    float32 运算与打印,满足滤波、比例与标定一类业务。

  2. 1.2.02026-07-14

    更贴近 C

    更多整数类型、数组指针与常见语法糖,写起来更顺手。

  3. 1.1.02026-07-14

    控制流增强

    函数参数、逻辑与位运算、for / break / continue、全局数组。

  4. 1.0.02026-07-14

    工业化起步

    多脚本、共享外部接口、主机编译工具与稳定运行时。