飘洋
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | 接手烂代码,先找引脚定义
接手烂代码,先找引脚定义

接手别人留下来的嵌入式项目,最怕的不是代码写得丑,而是硬件边界不清楚。没有注释、没有文档,某个 GPIO 到底接了继电器、按键还是测试点都说不清。这时候直接追业务逻辑,往往越看越烦。

我的习惯是先停一下,不急着重构,也不急着骂上一个人。先把引脚定义这张“地图”补出来。地图有了,奇怪的宏、反向电平、初始化顺序,才有地方落脚。

先从能确认的东西下手

第一步看原理图和 PCB,能找到网名最好,找不到就顺着连接器、芯片管脚、测试点一路查。别只盯着 MCU 端口表,还要把外设侧写进去。比如 PA3 不是普通输入口,而是“门磁检测,外部上拉,低电平有效”。

如果只有代码,就用板子行为反推。按键、LED 这类低风险外设,可以看电平变化;电机、电源、通信接口这类地方,先别贸然改输出状态。

c7839c5eb108c577951f2378608441.png

                                自绘引脚追踪示意图

整理引脚表,不要只写端口号

一张有用的引脚表,至少要有四列:MCU 引脚、网名或外设、方向、电平含义。再多写一列“风险备注”也很值,比如“上电默认高阻”“低电平吸合继电器”“与下载口复用”。

有个小坑:不要看到代码里写了 GPIO_OUT,就认定它永远是输出。有些项目会在不同阶段切方向,也有些老代码把宏名沿用错了。代码写法和硬件用途,最好分开记。

再回到代码里做收口

引脚关系清楚后,再看初始化就顺很多。先检查时钟、复用功能、上下拉、默认输出电平,再看中断和定时器。会影响外设动作的地方,尽量改成能读懂的业务名字,例如 RELAY_MAIN_EN、KEY_START_IN。

改名不要一口气铺太大。先围绕一个模块做,把编译、上板验证、记录一起完成。老项目最怕“顺手优化”,一顺手就改掉了上电时序。

给后来的人留一点余地

最后建议把引脚表放进仓库,不要只存在个人桌面。README、Excel、Markdown 都行,关键是跟代码同版本。每改一次硬件或复用功能,就顺手更新。

遇到没有注释、没有文档的代码,别急着证明自己能读懂。先把硬件边界摸清,把引脚定义补上。代码再乱,只要地图还在,项目就没有真的失控。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论