找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1603

积分

0

好友

209

主题
发表于 昨天 09:08 | 查看: 7| 回复: 0

前几天逛论坛,看到一篇帖子,内容挺有意思,也引发了我自己的一些思考。事情的起因,是一位网友发帖求助:

论坛求助帖截图:求助怎么学单片机,内容涉及寄存器、RCC配置与systick的困惑

我简单地回复了一下,建议他先别死磕寄存器,可以尝试用 HAL 库把 STM32 的基本操作跑通再说。没想到,他接着又追问道:

论坛评论区截图:用户探讨从HAL库转学寄存器的心路历程

看到这里,我“掐指一算”,大概明白了他的处境,于是有了上面的答复:

我猜一下,你应该没有学过51单片机,直接学的STM32,用的是HAL库,然后也学了个半吊子,所以很多东西搞不清楚。然后又看到别人说寄存器能够理清思路,又跑过来学寄存器,所以现在一头雾水。

了解我的朋友可能知道,我入门单片机是从 51 开始的,而且一开始用的编程语言是 51 的汇编。学完汇编后,还用汇编语言做了一个小项目,之后才转向 C 语言。

所以我对单片机的了解,是一个“自底向上”的过程。寄存器、时钟周期、指令周期、位定义这些概念,对我来说是根基一样的存在。当初我用汇编写延时函数,真的是一个机器周期一个机器周期地计算,只要我算对了,延时精度就绝对可靠。

因此,后来很多人问我单片机的学习路线,我通常都建议从 51 单片机开始。因为它足够简单,也足够典型。你不用花费太多时间就能了解一款单片机的基本运作方式,而且接触的是经典且通用的架构。

打个比方,这就像《倚天屠龙记》里的张无忌,先练好了九阳神功这门深厚内功,再去学乾坤大挪移这类精巧招式,自然是事半功倍。

但是,随着 32 位单片机(尤其是 STM32)的应用越来越广泛,开始出现一种声音:建议直接从 STM32 开始学,认为 51 单片机已经过时了,没必要再学。甚至有一段时间,连我自己也这么想过。

尤其是到了现在,AI 辅助编程的能力如此强大和普及。对于 8 位单片机的程序开发,交给 AI 来处理几乎是小菜一碟。我一开始还用 AI 做自动补全,后来干脆直接当“产品经理”,描述需求让 AI 生成代码。

然而,这带来一个明显的问题:我们对底层架构、基础概念的了解越来越少,什么都依赖 AI。不出问题的时候,一切安好;一旦出现问题,很容易两眼一抹黑,不知从何下手。

就像开头提到的那位朋友,我一看他提问的方式,大概就能猜到他当前的处境:一个人在自学,没有老师指导,没有系统的学习路线,会一点点 AI。买了几块开发板,跟着配套资料学了一两个星期,用 HAL 库操作 STM32,功能勉强能跑通,但为什么要这样配置却完全不清楚。问 AI,得到的解释也可能让人更加困惑。

当然,这里还有一个客观因素:STM32 本身的架构就比较复杂,对于零基础的朋友来说,想要完全掌握确实非常困难。

我并不是要否定 AI 的作用。相反,我认为 AI 是这个时代赋予我们的一份厚礼。

我现在写程序,无论是 51 还是 STM32,基本就搭个核心框架,剩下的都交给 AI 去填充。对于 ESP32,我甚至可以做到不写一行代码,全靠 AI 生成。涉及 Linux 相关的操作,我直接开启 SSH 通道,然后让 AI 远程接管,想要什么功能直接下命令就行。FPGA 最近用得少,还没怎么测试 AI 的效果。

不可否认的是,后续嵌入式行业的入门和学习方式,真的会发生改变。会变成什么样,我现在也说不准。但是,我能把 AI 用得还算顺手,前提是我有相应的技术基础。我知道某个功能需求的边界在哪里,知道哪些配置是关键的。所以我既不会盲目自信,也不会去“为难” AI,提出一些它无法实现或理解有偏差的需求。

写到这里,我忽然意识到,自己可能也陷入了一种“过来人”的傲慢与迷茫。

当下的嵌入式开发,可能已经不再是我们当年那种必须抱着数据手册,逐行啃寄存器的时代了。AI 的深度介入,让“知道怎么做”变得前所未有的容易和廉价,但“知道为什么这么做”反而变得更加珍贵和有价值。

所以,或许更合适的学习路径应该是这样的:

对于在校学生,或者时间比较充裕的学习者,我依然建议可以从 51 单片机入手。花两三个月的时间,亲自写代码、看寄存器手册、调试 I2C 时序…… 这么做,不是为了让你以后永远都用寄存器编程,而是为了让你在未来看到 HAL 库或者其他高级抽象层的代码时,能明白那一行行宏定义和函数调用背后,究竟在对硬件进行怎样的操作。这种底层的认知,是开发者理解复杂系统的宝贵财富。

对于需要快速上手项目、投入生产的开发者,完全可以优先使用成熟的库(比如 HAL 库),甚至直接利用 AI 生成基础代码。但是,对于你实现的每一个关键功能,必须去了解它背后的基本原理和配置逻辑。不能完全当“甩手掌柜”,心里要有个底,知道代码大概是怎么运作的。

最后,我想修正一下文章开头那个可能有些自以为是的猜测。那位提问的同学,可能并不是学的“半吊子”,他只是恰好被困在了海量寄存器细节与高度抽象的库函数之间的“夹层”里,感到迷茫和无从下手。希望他能尽快找到适合自己的方法,走出这个阶段。

最后的最后……(此处省略作者关于春节假期结束的个人感慨)

关于嵌入式学习路径、库与寄存器的选择,或者 AI 在开发中的应用,你有什么想法或经验?欢迎来云栈社区开发者广场一起聊聊。




上一篇:从技术到产品:AI时代独立开发的“道法术器”实战指南
下一篇:OpenSpec 规范驱动开发实战:告别 Vibe Coding 黑箱,在 Android 项目中落地 AI 协作
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-25 10:43 , Processed in 0.780602 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表