【嵌入式软件AI编程】01. 基于 STM32/Claude Code的AI编程

欢迎关注 youcans@xidian【嵌入式软件AI编程】专栏

【嵌入式软件AI编程】01. 基于 STM32/Claude Code 的 AI 编程

【嵌入式软件AI编程】02. 面向AI协同的嵌入式软件开发范式

AI Coding 快速发展。很多程序员已经开始在日常工作中使用AI生成代码、解释代码、修改程序、分析错误,甚至辅助完成需求整理和技术文档编写。在Web开发、应用软件开发和数据处理等领域,AI已经不再只是一个"问答工具"或"代码补全工具",而是逐步参与到软件开发的多个环节之中。

本专栏结合STM32项目实践,介绍嵌入式软件AI编程的实战路径。本专栏内容来自图书《嵌入式软件的AI编程实践》,即将出版。

1. AI编程正在改变软件开发方式

过去我们谈到编程工具,通常想到的是编辑器、编译器、调试器、版本控制系统和各种开发框架。开发者自己理解需求、查阅资料、设计结构、编写代码、排查错误,工具主要起辅助作用。

AI编程工具出现后,这种协作方式正在发生变化。

在很多软件开发场景中,AI已经可以完成远不止"补全几行代码"的工作。例如:

  • 根据需求描述生成初步实现方案;
  • 阅读已有项目,解释代码结构和调用关系;
  • 根据错误日志分析编译或运行问题;
  • 修改函数、模块甚至多个文件;
  • 根据代码生成说明文档和测试思路;
  • 帮助开发者整理任务清单和开发记录。

AI正在从"代码提示工具"逐渐变成"开发协作者"。开发者不再只是逐行写代码,而是越来越多地承担目标定义、过程组织、结果判断和质量控制的工作。

这种变化在通用软件开发中已经比较明显,但在嵌入式软件开发中,情况会更复杂一些。

2. 嵌入式软件AI编程面临的困难

嵌入式软件开发和普通软件开发有一个重要区别:程序最终必须运行在真实硬件上。

以STM32开发为例,一个看似简单的功能,通常不只是写几行C代码。开发者还需要考虑芯片资源、引脚复用、时钟配置、外设初始化、中断机制、DMA传输、存储空间、编译工具链、烧录器和调试器等问题。

例如,要实现一个PWM输出功能,至少要确认:

  • 使用哪个定时器;
  • 输出到哪个引脚;
  • 引脚是否支持对应的复用功能;
  • PWM频率和占空比如何设置;
  • 定时器时钟来源是否正确;
  • CubeMX配置是否已经生成初始化代码;
  • 用户代码应该写在哪个位置;
  • 程序烧录后是否真的有波形输出。

AI可以帮助写代码,但如果没有这些硬件和工程上下文,它很容易给出"看起来合理、实际不能运行"的代码。

嵌入式软件AI编程的困难主要体现在几个方面。

  • 第一,嵌入式软件依赖具体硬件平台。

    AI无法凭空判断开发板接线是否正确,也无法直接看到LED是否闪烁、串口是否输出、PWM是否有波形、ADC数据是否变化。这些都必须由开发者在真实硬件上验证。

  • 第二,外设配置和代码实现强相关。

    在STM32项目中,很多代码必须建立在CubeMX配置正确的基础上。如果外设没有开启、引脚没有配置、中断没有使能、DMA没有设置,单纯修改应用代码并不能解决问题。

  • 第三,工程结构比单个源文件复杂。

    STM32项目通常包含启动文件、HAL库、系统初始化代码、用户代码区、CMake配置、头文件和多个源文件。AI修改代码时,必须知道哪些文件可以改,哪些文件不应该改,哪些代码会被CubeMX重新生成覆盖。

  • 第四,调试结果来自真实运行。

    普通软件的错误常常可以通过日志、异常栈或单元测试判断,而嵌入式开发还需要结合示波器、串口助手、调试器、开发板状态和外部模块响应来确认。

  • 第五,AI容易在上下文不足时扩大修改范围。

    如果开发者只说"帮我实现一个功能",AI可能会自行假设硬件连接、外设配置和软件结构,甚至修改与当前任务无关的代码。这样虽然看似效率高,但后续审查和调试会变得困难。

因此,嵌入式软件AI编程的核心问题,并不是"AI会不会写代码",而是:

如何让AI在明确的硬件约束、工程上下文、任务边界和验证闭环中参与开发。

3. 本专栏的定位:让AI参与嵌入式软件开发流程

本专栏关注的不是"让AI一次性生成一个完整STM32项目",也不是简单展示几个AI写代码的小技巧,而是探索一种更适合嵌入式软件的AI协同开发方法。

这里所说的嵌入式软件AI编程,是让AI参与嵌入式软件开发流程。它不是把开发者排除在外,而是重新划分开发者与AI之间的工作关系。

在这种协作方式中,开发者主要负责:

  • 明确开发目标;
  • 准备工程资料;
  • 控制任务边界;
  • 审阅代码修改;
  • 完成硬件验证;
  • 判断结果是否满足需求。

AI主要参与:

  • 分析工程结构;
  • 理解外设配置;
  • 制定任务清单;
  • 生成修改方案;
  • 编写和修改代码;
  • 分析编译和运行问题;
  • 整理文档和测试记录。

也就是说,开发者从主要执行者,逐步转变为组织者、判断者和审核者;AI则成为开发过程中的重要协作者。

这种分工的价值在于:开发者可以减少在重复性代码细节、资料查找和错误排查上的消耗,把更多精力放在系统设计、项目推进和硬件验证上。对于初学者来说,这也意味着学习方式会发生变化。

传统学习路径通常是:先学C语言,再学寄存器或HAL库,再学外设例程,然后通过大量调试积累经验。这个路径当然是完整的,但链条较长,初学者很容易陷入细节,短时间内难以建立对完整开发流程的认识。

而在AI协同开发中,学习者可以更早进入真实项目实践:在任务中遇到问题,借助AI理解问题,再回到开发板上验证结论。学习重点不再只是记住某个函数怎么写,而是理解"需求如何转化为配置和代码""软件如何控制硬件""运行现象如何反推问题原因"。

这正是本专栏希望呈现的内容。

4. 嵌入式软件AI编程的基本流程

不同STM32案例涉及的外设、文件和功能不同,但开发者与AI的协同方式具有共通性。结合STM32项目实践,可以将嵌入式软件AI编程归纳为以下几个基本环节。

  • 第一步,使用CubeMX完成工程配置并生成初始工程。

    在目前阶段,我仍然建议初学者使用STM32CubeMX手动完成芯片选择、外设配置、引脚分配、时钟设置和工程生成。这样做虽然增加了一些人工操作,但更稳妥,也更容易理解工程来源。

    AI可以参与配置要求整理和检查,但不建议一开始就完全跳过CubeMX,让AI直接生成整个初始工程。

  • 第二步,使用AI分析工程。

    工程生成后,可以让AI读取.ioc文件、初始化代码、目录结构和相关源文件,分析当前工程具备哪些外设条件,哪些代码由CubeMX生成,哪些区域适合添加用户代码,后续任务可能涉及哪些文件。

    工程分析的目的不是马上写代码,而是让AI和开发者先对当前工程状态形成一致理解。

  • 第三步,根据分析结果制定任务清单。

    在工程条件明确之后,可以要求AI根据功能目标制定任务清单。任务不应按照单行代码或单个函数机械拆分,而应围绕完整功能来划分。例如"实现按键状态切换""实现ADC采样结果处理""实现串口周期发送"等。

    每项任务都应尽量做到目标明确、修改范围清楚、结果可以验证。

  • 第四步,按照任务清单逐项修改代码。

    AI协同开发不适合一次性把所有需求都交给AI修改。更稳妥的方式是每次选择一项任务,让AI在指定文件和指定范围内生成代码修改。当前任务完成审阅和验证后,再进入下一项任务。

    这样可以减少任务之间的相互影响,也方便定位问题。

  • 第五步,审阅并确认代码修改。

    AI生成的代码不能不经审阅就直接写入工程。开发者应检查本次修改是否符合任务目标,是否修改了不该修改的文件,是否破坏已有接口,是否引入无关功能。

    这一步非常重要。AI可以写代码,但开发者必须掌握最终判断权。

  • 第六步,编译、烧录并运行验证。

    代码修改确认后,需要重新编译工程,并将程序烧录到开发板,通过真实运行结果验证功能是否符合预期。如果出现编译错误、烧录失败或运行异常,可以把完整错误输出、相关代码和实际现象反馈给AI,让AI协助分析原因并提出修改建议。

    新的修改仍然需要再次审阅和验证。

这个流程可以进一步概括为三项基本原则:

  • 修改前要有依据。
  • 每次代码修改都应基于工程分析和任务清单,而不是凭感觉让AI随意发挥。
  • 修改过程要审阅。

所有代码修改都应由开发者检查确认,特别要关注修改范围、接口关系和自动生成代码边界。

修改后要验证。

嵌入式软件最终要在开发板上运行,是否正确不能只看AI解释,也不能只看代码是否"看起来合理",必须以编译、烧录和实际运行结果为准。

5. 本专栏后续会介绍哪些内容

本专栏将以STM32开发为主要场景,以Claude Code为主要AI编程工具,围绕嵌入式软件AI编程展开实践介绍。后续内容大致分为四类。

  • 第一类是基础项目。

    从最简单的LED闪烁程序开始,介绍如何让AI分析STM32工程、制定任务清单、修改代码、审阅修改并完成运行验证。这个阶段的重点不是功能复杂度,而是建立第一个完整的AI协同开发闭环。

  • 第二类是基础外设与通信实验。

    围绕GPIO输入与外部中断、定时器、PWM、互补PWM、ADC、ADC DMA、DAC、UART、UART DMA、I2C和SPI等内容,介绍AI如何参与外设实验开发。每个实验都不是单纯讲外设原理,而是关注AI如何理解工程配置、修改代码、分析错误和支持验证。

  • 第三类是系统资源与程序运行机制。

    嵌入式项目不仅有外设,还需要系统资源和程序组织方式。后续会介绍看门狗、RTC、Flash参数存储、多任务处理、事件驱动、状态机设计和FreeRTOS多线程入门等内容,帮助读者理解单片机程序如何从"单个功能"走向"系统运行"。

  • 第四类是综合项目。

    在基础实验之后,专栏会以"基于ADC同步采样的PWM占空比控制"为综合案例,介绍如何借助AI完成需求分析、功能设计、架构设计、详细设计、任务规划、程序框架、模块接口和按任务编程。

进一步,还会讨论AI辅助工程配置、工程构建与调试、运行验证与分析、测试组织与评估、Git版本控制、AI辅助代码审查、项目维护与二次开发、STM32开发Skill以及AI协同开发的安全边界等问题。

这些内容的目标不是堆叠更多外设,而是逐步形成一条可复用的嵌入式软件AI编程路径。

6. 从"让AI写代码"到"让AI参与开发流程"

很多人第一次接触AI编程时,最直接的想法是:让AI帮我写一段代码。

这当然有用,但对嵌入式软件来说远远不够。

因为嵌入式软件面对的不是孤立代码,而是一个由芯片、外设、工程配置、编译工具链、烧录调试环境和真实硬件现象共同构成的系统。AI写出的代码只有放进正确的工程结构中,经过编译、烧录和运行验证,才算真正有意义。

所以,嵌入式软件AI编程更重要的不是"AI能不能写代码",而是"能不能让AI参与完整开发流程"。

从这个角度看,AI的价值不只是提高写代码速度,更在于帮助开发者理解工程、组织任务、分析问题、整理文档和形成规范。开发者的价值也不会消失,而是更加集中在目标判断、系统设计、工程控制和硬件验证上。

本专栏将从STM32开发实践出发,一步步展示这种协作方式如何落地。下一篇将从开发环境和第一个AI协同STM32程序开始,进入具体实践。

版权声明:

欢迎关注 youcans@xidian【嵌入式软件AI编程】专栏

转发必须注明原文链接:

【嵌入式软件AI编程】01. 基于 STM32/Claude Code 的 AI 编程(https://youcans.blog.csdn.net/article/details/164429293)

Copyright by ai4mcu@qq.com 2026

Crated:2026-09

相关推荐
小麦嵌入式1 小时前
FPGA入门(十一):受控线性序列机 UART 发送升级
stm32·单片机·嵌入式硬件·mcu·fpga开发·硬件工程
leeyi2 小时前
消息丢了怎么办:事务 Outbox 与兜底 CronJob(第106篇)
agent·ai编程·领域驱动设计
小智学长 | 嵌入式2 小时前
实测GPT-6 Astra绘制硬件原理图和PCB效果分享
嵌入式·嵌入式开发·ai工具·单片机开发
jianqiang.xue2 小时前
ESP-IDF保姆级入门29|FreeRTOS任务管理与调度全解:任务创建/状态切换/优先级调度/双核负载均衡/实时性优化,掌握嵌入式多任务编程核心
stm32·单片机·mcu·物联网·51单片机·iot
Carson带你学Android3 小时前
9月 Android Drop:Gemini 终于不只是聊天助手了
android·ai编程
宋哥转AI3 小时前
深入理解 AI Agent · Agent 安全威胁全景与四层纵深防御
人工智能·agent·ai编程
妙码生花3 小时前
全网 8k star 的 BuildAdmin 正式发布 Golang 版本,这次我们在CRUD赛道杀死了比赛。
前端·后端·ai编程