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

我怎么用 AI 一天学完 15 个嵌入式固件源文件

一句话: AI 不只是写代码的工具。把它当老师用——追问每个概念直到彻底搞懂、不让它帮你写而是让它帮你解释——一天能从零吃透一个上万行的嵌入式项目。分享我的学习方法。

系列文章:《AI赋能嵌入式开发》 — DeepSeek看图、AI当老师、AI审查代码、省Token技巧——用AI加速嵌入式开发

📄 含一键部署提示词 ✅ 一天学完15个源文件 📄 双窗口分工法 📄 7条血泪经验



@[TOC]

适合谁读:适合嵌入式开发者、单片机初学者及遇到类似问题的工程师

AI 能写代码,但别让它帮你写

我这段时间用 AI 做嵌入式开发,发现一个现象:

大多数人问 AI:"帮我写一个 I2C 从机驱动"→ AI 写好了 → 贴进去能跑 → 下次还是不会写。

我反过来用:不让 AI 帮我写代码,而是问 AI"这段代码什么意思"

比如看到这行:

pADI_CLK->CLKCON0 |= BITM_CLOCK_CLKCON0_CLKMUX;

不问 AI "帮我配个时钟",而是问:

"|=这个操作是什么意思?BITM_CLOCK_CLKCON0_CLKMUX是个什么东西?为什么用|=而不是=?"

AI 回答:|=是"只把某一位设成 1,其他位保持不变"。=会覆盖所有位,可能把旁边已经配好的功能全毁掉。BITM_前缀表示这是一个位掩码。

这一行懂了,后面所有|=&= ~的操作都不用再问了。因为原理是一样的——只改要改的位,不动其他位。


不跳步:每个概念追到彻底明白

嵌入式代码里全是这种"看起来简单但不知道什么意思"的东西:

我看到的东西我追问的问题
0U"数字后面加 U 是什么意思?"
volatile uint8_t g_bTick;"volatile 到底防止编译器做什么?不加会怎样?"
NVIC_EnableIRQ(22U)"22 是哪来的?为什么不用枚举名?中断号到底是怎么对应到向量表的?"
__disable_irq()"关中断之后如果忘了开会发生什么?为什么 Flash 写之前必须关中断?"
BITM_I2C_SSTAT_START"这个宏展开是什么?START 事件和 REPSTART 有什么区别?"

大多数教程会说"volatile 防止编译器优化",就完了。

我要追问到:"什么叫编译器优化?假如不加 volatile,编译器会怎么处理?能不能举个例子让我看到区别?"

AI 给了我一个场景:定时器 ISR 里g_bTick = 1,主循环while (g_bTick == 0)等——如果不加 volatile,编译器可能把g_bTick读到寄存器里反复用,永远看不到 ISR 改的新值。程序死循环。

懂了场景,volatile 就永远不会忘了加。


读写分离:一个窗口学,一个窗口做

我是个新手,刚开始看项目的时候连很多基本语法都不熟。

但我发现一个好办法:开两个窗口

窗口干什么
窗口 1(学习窗口)问 AI"这段代码什么意思""为什么这么做"——纯聊、纯学
窗口 2(工作窗口)写代码、改代码、编译、调试

为什么要分开?

因为混在一起会打断节奏。学的时候想"要不要试一下",试了发现跑不通,就忘了刚才学到哪了。两个窗口把"学"和"做"隔离开,学习窗口里只关注一件事:搞懂概念


跟着 CPU 的执行顺序学,不跟着目录学

第一天打开项目,16 个源文件,不知道从哪看起。

AI 告诉我:别按目录读,跟着 CPU 上电的流程走。

上电 → main() → App_Init() → 15 步初始化 → 主循环

于是我的学习路线变成了:

1. main.c — 先看懂"程序从哪开始、做了什么事" 2. app_state.c — 状态机是怎么跑的 3. app_monitor.c — 100ms 监控链路 4. mod_tec.c — TEC 温控怎么用状态机代替延时 5. app_cmis.c — I2C 寄存器表 + Page Select 6. drv_i2c_slave.c — I2C 从机中断状态机 7. drv_pi12030.c — SPI 怎么和外设芯片通信 8. drv_timer.c — 硬件定时器怎么触发 100ms 9. drv_adc.c — 8 路模拟采集 10. drv_flash.c — Flash 双备份 + CRC 校验 ...

每看完一个文件,AI 会告诉我"这个文件调了哪个驱动,下一个该看那个"。顺着调用链,一天之内 15 个文件全串起来了。


问"为什么",不问"是什么"

这是最关键的区别。

问"是什么"问"为什么"
"ISR 里不能放延时""为什么 ISR 里不能放延时?放了会怎样?"
"Flash 要双备份""为什么不能只存一份?写一半断电了怎么办?"
"状态机用枚举""为什么用枚举而不是直接写 0 1 2 3?"
"BSP 层收口引脚""不用 BSP 层会怎样?为什么不能直接调 DioClr?"

问"是什么"得到一个规则。问"为什么"得到理解。

理解了之后,你不需要死记规则——因为你知道违反规则的后果是什么。


遇到不懂的词立刻停下来

以前看教程,遇到不认识的缩写,我习惯"跳过,先看完再说"。

现在不一样了。看到volatile|=BITM_REPSTARTTMPGDAPC——遇到一个陌生的,立刻问 AI 这是什么意思

不攒着,不跳过去。"

为什么?因为嵌入式代码的术语是嵌套的——你不懂BITM_,就看不懂|= BITM_,就看不懂寄存器配置,就看不懂整个外设初始化。一个词卡住,后面全部白读。

AI 的好处是你可以无限追问,不用担心"问题太蠢"被嘲笑。


三步总结:我的学习法

步骤做什么例子
1跟着 CPU 执行顺序读,不按目录读main()开始,顺着调用链往下
2每个不认识的词立刻停下来问0Uvolatile、`
3问"为什么"而不是"是什么""为什么 ISR 里不能放延时?放了会怎样?"

AI 在这个过程里的角色不是"代码生成器",而是一个永远不会烦的老师——你可以问它 50 遍同一个问题,从不同角度、用不同比喻,直到你彻底搞懂。

这就是我一天从零学到能理解整个 19 文件嵌入式项目的办法。不是什么天赋,就是不跳步 + 追问到底 + AI 当老师


实测对比:传统自学: 15个文件 ≈ 2-3周 | AI辅助+追问法: 15个文件 ≈ 1天

有用的话点个收藏,下次调试直接用。有问题欢迎评论区交流,看到了都会回。

下一篇:含一键部署提示词——DeepSeek看图、AI当老师、AI审查代码、省Token技巧——用AI加速嵌入式开发

http://www.jsqmd.com/news/1163894/

相关文章:

  • SMT 锡珠问题:一次产线排查的完整复盘
  • 2026广州民办高中公费生怎么报?南沙朝晖高级中学 2026 招生政策 - 米諾
  • Python--day6
  • 浪琴中国官方售后服务中心|地址与客服服务热线权威信息通告(2026年7月最新) - 浪琴服务中心
  • 卡地亚中国官方售后服务中心|详细热线电话及全部网点地址权威信息通告(2026年7月最新) - 卡地亚官方售后中心
  • OSAPIChecker社区贡献指南:如何参与这个开源项目的完整教程
  • Agentic Proposing: Enhancing Large Language Model Reasoning via Compositional Skill Synthesis
  • AD7175-8与PIC18F96J94高精度数据采集系统设计
  • 如何为KDNN_torch_adapter贡献代码:开发者入门指南
  • VMware安装CentOS7教程:从下载镜像到网络设置_一步不落_新手零失败
  • 2026广州外贸GEO服务商榜单:独立站获客企业怎么选? - 米諾
  • 2026济南除甲醛公司资质怎么查?看这篇就够了 - 米諾
  • 2026 广州荔湾区长短途搬家全套服务明细,租房搬家完整流程与行业收费套路拆解 - gzdjxd
  • STM32基础
  • 劳力士中国官方售后服务中心|官方电话和网点地址权威信息公告(2026年7月最新) - 劳力士服务中心
  • 亲身到店探访杭州亨得利官方名表服务中心|地址及官方联系电话(2026年7月更新) - 亨得利官方
  • 2026 年 6 月企业资质代办|北京金三科技股份有限公司怎么样?实力与落地案例深度解析
  • KDNN_torch_adapter与MKL-DNN对比:在AArch64上的性能基准测试
  • Moving Beyond Downstream Task Accuracy for Information Retrieval Benchmarking超越下游任务准确率:信息检索基准测试的新方向
  • AI 工具开发实战(7):开发一个 AI 数据看板——用 Streamlit 上传文件自动分析
  • 2026年思蕊淋嘉淋浴房:大型企业如何打造极致淋浴体验? - 米諾
  • WVP-GB28181-Pro分布式视频平台语音对讲功能深度解析与故障排查指南
  • 打卡第27天 - P5266 - 2026 - 7 - 10
  • XUnity.AutoTranslator终极指南:如何快速修复游戏翻译失效问题
  • UE5 使用 custom stencil + custom depth + world normal + material id map 制作描边效果
  • GBFR Logs终极指南:11个核心功能带你从新手到《碧蓝幻想Relink》数据专家
  • 【愚公系列】《移动端AI应用开发》041-DeepSeek与第三方服务的集成(第三方消息推送与实时通信)
  • clibcni核心组件解析:深入理解CNI插件架构
  • 幻想世界平台:下一代注意力容器的诞生
  • Python 实现基于 TCP 的聊天程序(Socket + threading + Tkinter + 4 节点并行)