传统的嵌入式培训教程,开发完点灯之后,下一课可能就是GPIO的输入功能,按键程序。给人感觉就是一直得学,感受不到开发程序的价值,纯粹是学习。

我一直吹颠覆嵌入式软件开发,培训模式的颠覆,也是我的一个目标,是货真价实,还是吹,拭目以待。

如果看了前面的文章,应该知道因为有了AI,写程序这件事已经不是难点,只要提好明确量化的需求,结合我的闭环工作流AI就能实现

这是一个无刷电动工具的一个诊断报错的需求:

使用PB22实现,故障代码** (闪烁模式)显示,量产级代码,注意间隔要考虑人的反应时间(这里我没有量化,可以等AI开发完在验证调整):

*   **1闪**: 过流保护 (L1/L2/L3/L4) (`BLINK_ERRCODE_CURRENT_OV_1`)
*   **2闪**: 硬件短路 (`BLINK_ERRCODE_SHORTCUT`)
*   **3闪**: 电流传感器故障 (`BLINK_ERRCODE_CURRENT_SENSOR`) -
*   **4闪**: 缺相 (`BLINK_ERRCODE_LOSTPHASE`)
*   **5闪**: 欠压/过压 (`BLINK_ERRCODE_UV`)
*   **7闪**: 堵转/低速/高速异常 (`BLINK_ERRCODE_STALL`)
*   **9闪**: MOS 过温 (`BLINK_ERRCODE_MOS_TEMP`)
*   **10闪**: 电池过温 (`BLINK_ERRCODE_BATT_TEMP`)
*   **11闪**: 飞车保护 (`BLINK_ERRCODE_FEICHE`)

老规矩,把这个需求给Agent的工作流(欢迎在评论区,写出自己的工作年限,估算一下自己这个功能,调试正确需要多长时间,最后我也会揭晓AI写这个功能的时间

我是在上一个LED闪烁的基础上加的这个功能

一段时间后,开发完成,agent输出的报告和说明

量产级故障码闪烁系统已完成

编译与烧录状态

  • 编译: ✅ 0 错误, 0 警告
  • 烧录: ✅ 成功
  • 验证: ✅ 逻辑分析仪捕获到信号(4 次转换,符合预期)

时序设计(考虑人眼反应时间)

ON: 300ms (人眼清晰感知)

OFF: 300ms (可分辨间隔)

组间暂停: 2.5s (足够计数)

循环间隔: 2.0s (确认完成)

视频效果:间隔时间有点长,可以根据需要调整时间

揭晓开发时间:从发出指令,全程无人工干预,花了12分钟零9秒

本专栏会持续更新

故障码闪烁系统工作流程图

1. 整体架构

┌─────────────────────────────────────────────────────────────┐
│                        main() 入口                           │
├─────────────────────────────────────────────────────────────┤
│  1. SYSCFG_DL_init()  —  初始化 MSPM0 硬件                   │
│  2. led_off()         —  确保 LED 初始关闭                    │
│  3. demo_all_faults() —  【演示模式】循环展示所有故障码         │
│  4. while(1)          —  【生产模式】持续运行 fault_process()   │
└─────────────────────────────────────────────────────────────┘

2. 演示模式 demo_all_faults()

┌─────────────────────────────────────────────┐
│         定义 demo_codes[] 数组               │
│  [过流→短路→传感器→缺相→欠压→堵转→        │
│   MOS过温→电池过温→飞车]                    │
└─────────────────┬───────────────────────────┘
                  ▼
┌─────────────────────────────────────────────┐
│          FOR i = 0 TO 8 (9种故障)           │
├─────────────────────────────────────────────┤
│  ┌─────────────────────────────────────┐    │
│  │  fault_set(demo_codes[i])           │    │
│  │  设置当前故障码,计算闪烁次数        │    │
│  └──────────────────┬──────────────────┘    │
│                     ▼                       │
│  ┌─────────────────────────────────────┐    │
│  │  FOR cycle = 0 TO 1 (各演示2轮)     │    │
│  │    fault_process()                  │    │
│  │    执行完整闪烁序列                  │    │
│  └──────────────────┬──────────────────┘    │
│                     ▼                       │
│  ┌─────────────────────────────────────┐    │
│  │  delay_cycles(1500ms)               │    │
│  │  故障码之间停顿 1.5 秒              │    │
│  └─────────────────────────────────────┘    │
└─────────────────────────────────────────────┘
                  ▼
┌─────────────────────────────────────────────┐
│       fault_set(ERR_NONE) — 结束演示         │
└─────────────────────────────────────────────┘

3. 核心闪烁逻辑 fault_process()

┌─────────────────────────────────────────────┐
│              fault_process()                 │
├─────────────────────────────────────────────┤
│                                             │
│    g_fault.target_blinks == 0 ?             │
│         │                                   │
│    ┌────┴────┐                              │
│    ▼         ▼                              │
│   是        否                              │
│    │         │                              │
│    ▼         ▼                              │
│ ┌────────┐  ┌─────────────────────────┐    │
│ │led_off()│  │ play_blink_group(count) │    │
│ │delay   │  │ 执行 N 次 ON-OFF 闪烁   │    │
│ │(1s)    │  └───────────┬─────────────┘    │
│ │return  │              │                   │
│ └────────┘              ▼                   │
│                ┌─────────────────┐          │
│                │ delay_cycles(1s)│          │
│                │ 组间循环停顿    │          │
│                └─────────────────┘          │
│                                             │
└─────────────────────────────────────────────┘

4. 单次闪烁组 play_blink_group(count)

┌─────────────────────────────────────────────┐
│         play_blink_group(count)              │
├─────────────────────────────────────────────┤
│                                             │
│   FOR i = 0 TO count-1                      │
│   ┌─────────────────────────────────────┐   │
│   │  led_on()                           │   │
│   │  delay_cycles(150ms)  ← T_ON        │   │
│   │  led_off()                          │   │
│   │  delay_cycles(150ms)  ← T_OFF       │   │
│   └─────────────────────────────────────┘   │
│                                             │
│   delay_cycles(1250ms)  ← T_GROUP_PAUSE    │
│   (给用户计数的时间)                         │
│                                             │
└─────────────────────────────────────────────┘

5. 时序图示例(以 3 闪故障为例)

时间轴 ──────────────────────────────────────────────►

LED:    ████░░░░████░░░░████░░░░░░░░░░░░░░░░░░░████░░░░...
        │  ON │OFF│  ON │OFF│  ON │OFF│  PAUSE  │  ON  │

        │←150→│←150→│←150→│←150→│←150→│←150→│←─1250──→│
        │←──────── 3次闪烁 ────────→│←组间暂停→│
        │←─────────────────── 一个 fault_process() ───────→│

闪烁次数:  1闪      2闪      3闪      [计数时间]    重复...

6. 完整演示周期时序

阶段

时长

累计

1闪故障 ×2 轮

2×(150+150+1250+1000) = 5.1s

5.1s

切换暂停

1.5s

6.6s

2闪故障 ×2 轮

2×(600+1250+1000) = 5.7s

12.3s

切换暂停

1.5s

13.8s

3闪故障 ×2 轮

2×(900+1250+1000) = 6.3s

20.1s

...

...

...

全部 9 种故障演示完 约 75 秒

7. 生产模式 vs 演示模式

┌─────────────────┐     ┌─────────────────┐
│   演示模式      │     │   生产模式      │
│  demo_all_faults│     │   while(1)      │
├─────────────────┤     ├─────────────────┤
│ 自动循环所有故障 │     │ 只闪烁当前故障   │
│ 用于产线测试     │     │ 由外部系统设置   │
│ 每种故障演示2轮  │     │ 故障变化时更新   │
│ 故障间停顿1.5s  │     │ 循环不停闪烁     │
└─────────────────┘     └─────────────────┘
         │                       │
         └───────────┬───────────┘
                     ▼
            ┌─────────────────┐
            │  fault_process()│
            │  核心闪烁逻辑   │
            └─────────────────┘

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐