跟着铁头山羊STM32

张开发
2026/4/10 13:48:44 15 分钟阅读

分享文章

跟着铁头山羊STM32
STM32 学习笔记二继续跟着实验走对输入检测和程序逻辑更有感觉了前言今天继续跟着铁头山羊学习 STM32。今天的内容依旧是围绕实验展开。昨天更多是在适应 STM32 的开发方式今天则开始慢慢去理解程序为什么要这样写、逻辑为什么要这样安排、输入和输出之间到底是怎么配合的。一、今天学习下来的整体感受今天做实验的时候我明显感觉到一个变化以前更关注“代码能不能跑”现在开始关注“代码为什么会产生这个现象”。这种变化虽然听起来不大但我觉得很关键。因为 STM32 后面的内容只会越来越多如果只是机械地照着例程敲代码后面一定会越来越乱。只有在前面把这些最基础的逻辑关系想清楚后续学习中断、定时器、串口这些模块时才不会崩。二、今天最大的重点输入检测的理解更深了一点今天学习中让我印象最深的还是输入检测这一块。相比输出控制输入检测更像是“程序开始具备判断能力”的第一步。因为输出是你告诉芯片做什么而输入检测则是程序先去获取外部状态再决定下一步怎么做。输入和输出的区别更清楚了今天重新看这部分内容时我对两者的区别理解得更直观了一些输出单片机主动去控制外设输入单片机主动去读取外部状态也就是说输出更偏“执行”输入更偏“感知”。STM32 程序一旦既能输入又能输出整个实验就不再是单向控制而开始有点“交互系统”的味道了。输入检测的程序结构更值得注意今天做相关实验时我发现输入类程序通常会有这样一个特点先初始化相关引脚然后在循环中不断读取状态最后根据状态判断执行哪种操作看上去代码结构不复杂但这里面已经有了最基础的嵌入式控制逻辑。说白了就是一句话先采集再判断再执行。这其实已经不是单纯的“写函数”了而是在写一个最基础的控制流程。三、对轮询方式有了更实际的认识今天继续接触输入实验的时候对“轮询”这个词终于有点不再停留在字面意思上了。什么是轮询我现在的理解很简单轮询就是程序一直不停地去看某个输入状态有没有变化。比如在主循环里不断读取引脚状态一旦检测到满足条件就去执行后面的逻辑。轮询的优点今天从实验角度来看轮询最大的优点就是简单直观容易上手适合入门理解程序流程对于刚开始学 STM32 的人来说轮询真的很友好。因为它没有那么多额外机制程序逻辑基本都是“看得见、跟得上”的。轮询的问题也开始暴露出来了不过今天学下来也开始感觉到轮询的局限程序会一直盯着某个状态效率不算高如果后面任务变多程序结构会越来越笨重所以我也能感觉到后面学习中断应该就是为了解决这一类问题。轮询更像是入门阶段最直接的办法而中断则是更进一步的优化方式。四、今天对“判断逻辑”这件事更有感觉了今天还有一个挺明显的收获就是我开始更注意程序里的判断逻辑了。以前写代码时总觉得 if 判断只是个语法结构。但放到 STM32 实验里以后我发现判断逻辑其实直接决定了整个实验现象。判断不是为了写代码而是为了控制现象比如读取到某种输入状态时程序执行某个操作读取到另一种状态时程序又执行另一种操作。这样一来判断语句不再只是“代码的一部分”而是连接输入和输出的桥梁。程序逻辑开始有“流程感”了今天做实验时我脑子里已经不再只是零散的几句代码而是开始把它们串成流程外部状态发生变化芯片读取这个变化程序做出判断输出对应结果虽然这个流程还很基础但我觉得这一步特别重要。因为后面的很多外设实验本质上也逃不开这一套逻辑。五、今天对实验现象的观察比昨天更细了昨天做实验时更多是“能跑通就行”今天则开始更关注实验现象本身。这一点我觉得是个进步因为 STM32 学习真的不能只看代码不看现象。现象是检验代码最直接的方法在 PC 上写程序很多时候看输出结果就行。但在 STM32 上实验现象就是最直接的反馈。代码到底有没有生效逻辑是不是符合预期很多时候不是靠“感觉”而是靠实验现象说话。同一段代码理解深度会完全不同今天最大的体会就是有时候同样一段代码第一遍只是“照着敲”第二遍再看就会开始注意它的结构第三遍结合实验现象去理解才会真的知道它在干什么。所以我现在越来越觉得STM32 学习不能急。很多东西第一次只是混个眼熟真正理解往往是反复做实验之后才慢慢建立起来的。六、今天踩到的几个小坑今天虽然整体还能跟上但过程里还是有几个地方比较容易出问题。容易只关注代码不关注引脚和硬件关系这个问题今天依然存在。有时候程序看起来没问题但如果没弄清楚具体引脚对应关系或者没搞明白硬件连接方式实验结果还是可能不符合预期。所以现在我越来越觉得STM32 代码不是孤立存在的它一定要和硬件结合起来看。判断逻辑写出来了但不一定完全想清楚了有些时候代码确实能实现功能但问自己“为什么这样判断”“为什么放在这里判断”时发现还没有理解得特别透。这说明我现在还是处在“会模仿”到“会分析”的过渡阶段。不过能意识到这个问题我觉得本身也是进步。还是会下意识想记代码而不是记思路今天做实验时我发现自己有时候还是想去记某几句固定写法。但 STM32 后面模块会越来越多如果一直靠记代码肯定不现实。更好的方式应该是记住这个实验的目标是什么它的程序流程是什么每一步初始化是为了什么现象和逻辑之间怎么对应这样后面改代码、看代码、写代码才会更轻松。七、今天学完之后我对 STM32 的理解又前进了一点STM32 学的不是“某一句代码”而是控制思路以前总觉得嵌入式学习就是学各种函数、配置、外设。但现在慢慢发现本质上学的是一种“控制系统的思路”。也就是怎么读取外部信息怎么做判断怎么执行动作怎么让整个流程稳定运行2. 实验不是孤立的知识点是在不断串联的今天也更明显地感受到昨天学的输出控制、延时这些内容并没有结束而是会继续在今天的实验里反复出现。这说明 STM32 的知识点不是割裂的。前面学过的东西后面会不断复用、不断组合最后形成更复杂的功能。入门阶段最重要的是建立“程序和硬件交互”的感觉我觉得这是这两天学习里最核心的收获。以前写普通 C 语言程序更多是处理数据但 STM32 程序本质上是在处理“外部世界的状态变化”。只要把这种感觉建立起来后面很多内容理解起来就会顺很多。以上就是我今天跟着铁头山羊学习 STM32 的笔记。这篇文章还是以个人学习记录为主重点是把今天对实验和程序逻辑的理解整理下来。后面如果继续学到中断、定时器或者串口我也会继续记录。

更多文章