
做嵌入式这些年我几乎每周都要回答同一个问题“STM32 参考设计到底去哪找”问的人里有刚入门的大学生也有做了三五年产品的工程师。刚开始我还会甩几个链接后来发现这事不是给个链接就能解决的。参考设计这东西说白了就是一套已经被验证过的电路和代码方案你照着改、照着抄、照着模仿能少走大量弯路。但问题是STM32 参考设计散落在官方文档、开发板厂商、开源社区、技术博客各种地方质量参差不齐很多人花了一整天搜出来一堆用不上的东西。这篇文章就把我这些年攒下来的“找料”经验一次性说清楚。我会按渠道分类把哪些平台值得收藏、每个平台适合找什么、怎么搜更高效、下载之后怎么判断能不能用全部盘一遍。再拿一个超声波测距项目当例子带你走一遍从零找齐参考设计的完整流程。不管你是准备做毕业设计、公司选型还是自己折腾点小项目这份清单应该都够用了。1. 先搞明白参考设计到底是一套什么1.1 参考设计不是一个文件是一套文件我见过太多新手下载了一个“原理图PDF”就以为拿到了参考设计然后画板子的时候发现引脚对不上焊完板子程序跑不起来最后跑来问我为什么。原因很简单真正的参考设计是一套互相配套的文件组合少一个都可能让你卡壳。一套合格的 STM32 参考设计通常包含这些部分原理图最好有源工程文件比如 AD、立创EDA 的工程不只是一张 PDFPCB Layout 文件方便查看布局布线和阻抗控制思路BOM 表里面写清楚每个元器件用什么型号、什么封装、什么替代料固件源码对应硬件工程的例程能直接编译下载验证用户手册或说明文档告诉你这个板子怎么用、跳线怎么接勘误表 Errata尤其对于刚量产的芯片这一步很多新手会忽略我踩过一次坑早期做一个电机驱动板从某论坛下载了一套看起来很完整的“参考设计”原理图、PCB 都有但 BOM 表是 Excel 老格式打开全是乱码。我照着 PDF 里的丝印买物料结果板子回来后发现 3.3V LDO 封装买错把原本应该是 SOT-23 的型号买成了 SOT-89折腾了一周才改好。那次之后我就养成了习惯下载任何参考设计第一件事是检查文件清单不全的宁可不选。1.2 先按自己的水平圈定范围另一个常见误区是不管自己什么水平一上来就找“最全”的资料。全不全其实不重要合适才重要。我一般把找参考设计的人分成三类每类的搜索策略完全不同。如果你是学生或在做毕设你需要的是“能快速跑通”的参考设计。这种资料的特征是有完整例程、有配套视频或图文教程、工程模板已经建好比如正点原子和野火的开发板资料就是典型。如果你是在职工程师需要做产品预研或者评估某个功能那你需要的是“官方案例 应用笔记”。比如你想做 USB 设备就去 ST 官网找 USB 相关的应用笔记 AN4879、AN57294 这类文档再配合 CubeMX 生成的 USB 例程比在网上找一个来路不明的代码靠谱得多。如果你是要把参考设计直接变成量产产品那就不能只看原理图了重心要放到 EMC 设计、电源树设计、Layout 注意事项和生产可制造性上。这类内容主要在官方评估板文档、硬件设计指南比如 AN4666、AN5032和安富莱这种老牌厂商的论坛里。想清楚自己要什么再动手搜效率能高一倍。不然就是下载了一堆资料硬盘塞满了项目一点没推进。2. 官方渠道ST 自己的资料才是最硬核的参考设计2.1 官网产品页和文档中心怎么逛很多人一说 STM32 参考设计第一反应是去 CSDN 搜其实优先级最高的应该是 ST 官网。ST 官方在每个 MCU 型号的产品页面下都会挂一系列资源包括数据手册Datasheet、参考手册Reference Manual、应用笔记Application Note、勘误表、CAD 原理图、PCB 封装库等等。具体路径大概是这样的打开 st.com在搜索框输入你用的型号比如 STM32F103C8T6进入产品页面后找到“Documentation”栏目。这里能看到这个芯片的所有公开文档列表按文档类型过滤就行。重点说一下STM32 的“参考手册”和“数据手册”是两个不同的东西千万别搞混。参考手册讲的是芯片内部外设怎么用几百页甚至上千页数据手册讲的是引脚定义、电气特性、封装尺寸通常一百多页。很多新手问“stm32 芯片第一脚怎么确认”答案其实就在数据手册的引脚图里或者在 PCB 封装库的丝印标注里不需要去网上求人。如果你要找的不是芯片资料而是完整的板级参考设计就去产品页里找“Hardware Development”或“CAD Resources”这类入口。ST 官方评估板比如 NUCLEO 系列、DISCOVERY 系列的原理图、PCB、BOM 都是公开的格式有 PDF 也有源工程这些就是最权威的参考设计。我画 STM32 最小系统板的时候基本上就是照着 NUCLEO 的板级设计来改的供电、复位、BOOT、晶振电路全部抄作业比自己凭感觉画稳得多。2.2 STM32CubeMX 和固件包现成的软件参考设计很多人口中的“代码参考设计”在 ST 这里其实就是 STM32Cube 固件包。你在 STM32CubeMX 里选中型号它会自动下载对应系列固件包比如 STM32Cube_FW_F1、STM32Cube_FW_F4。这些固件包里有每个外设的 Example 工程比如 TIM 定时器捕获、USART 串口收发、CAN 通信、USB Device。这些例程就是 ST 官方写的“软件参考设计”代码风格统一注释规范还都配了 README 说明怎么用。之前有网友问“stm32 定时器捕获测频率有参考吗”其实 Cube 固件包里就有 TIM Input Capture 的例程路径一般在Projects/STM32xxx-EVAL/Examples/TIM/TIM_InputCapture。你要做的就是打开例程把引脚改成自己的板子逻辑基本上不用动。还有人说“stm32 芯片包安装总是失败”这里大概率指的是 Keil 的 Device Pack 或者 CubeMX 的固件包没装好。Device Pack 在 Keil 的 Pack Installer 里直接点安装CubeMX 固件包在 Help 菜单的 Manage Embedded Software Packages 里选型号版本下载。网络不好的时候容易中断解决办法是找离线包ST 官网每个固件包都有单独的 ZIP 下载入口。如果下载好了还提示找不到检查一下安装路径有没有中文我见过不少因为这个翻车的。2.3 ST 官方的开源仓库和社区除了官网ST 在 GitHub 上有一个官方组织里面维护着大量参考例程和工具链脚本。比如 VSCode 开发 STM32 的环境配置、CMake 工程模板、以及各种中间件示例。之前有人问“vscode 配置 stm32 开发环境怎么搞”与其看别人写的零散博客不如直接参考 ST 官方的 VSCode 扩展和 CMake 模板配合 CubeMX 生成工程。这样至少能保证工具链版本是配套的。ST 还有一个官方开发者社区网址就叫 ST Community。上面有很多应用工程师和原厂专家回答问题搜索“型号 关键词”经常能翻到比应用笔记更细的解答。比如“stm32 can通信突然连不上”我在社区里就见过有人贴出完整的波形抓取过程和排查思路比你在群里问半天管用。另外提一句如果你做电机控制ST 的电机控制 SDKX-CUBE-SPIN就是一份非常完整的参考设计包含 FOC 算法库、调试工具和接线说明。很多人在网上求“stm32 foc 代码”其实这套官方参考设计做得比网上任何一个开源版本都完整而且有配套文档。新手可能觉得库函数封装太多不好懂但作为产品化参考它是最值得研究的。3. 国内开发板厂商新手上路最该收藏的资源站3.1 正点原子和野火教科书级别的资料集合在国内做 STM32绕不开正点原子和野火这两家。他们做开发板起家积累了非常庞大的资料体系而且大部分资料是免费的。不管你有没有买他们的板子资料都可以下载参考。这两家的资料中心做得很规范按芯片型号分类原理图、PCB、例程源码、用户手册、视频教程、工具软件一应俱全。正点原子最出名的是它的“手册 视频 例程”三件套从 GPIO 点灯到 FreeRTOS、LVGL 移植整个学习路径是完整闭环的。很多人问“stm32 标准库新建工程怎么建”直接看正点原子的新建工程教程配合它的工程模板十分钟就能搞定。另外它的例程工程结构很清晰用 Keil 打开就能编译下载对新手极其友好。野火家的资料风格我更偏爱一点它的 PDF 文档做得细致尤其是《STM32 库开发实战指南》把寄存器和库函数的对应关系讲得很清楚。如果你要查某个外设的底层机制野火手册的排版读起来舒服。这两家的下载入口都在各自官网上部分大文件走百度网盘下载时注意看解压密码提示正点原子的压缩包通常有密码就在下载页面里别到处问人。我个人的习惯是新买一款芯片先把正点原子和野火对应型号的资料包都下载下来对照着看。两家的电路设计思路有差异比如电源部分、串口电路、LED 驱动方式对比之后你能学到不少“同功能不同实现”的方案这对以后自己画板子很有帮助。3.2 硬石、安富莱适合进阶和产品化参考除了两家巨头还有几家明确走“进阶路线”的厂商也值得收藏。硬石电子在电机控制领域积累很深它们的步进电机、伺服电机、无刷电机例程非常多而且多数是基于 HAL 库的工程。如果你找“五线四相步进电机 stm32 参考”硬石的例程代码注释详细控制逻辑完整比网上那些只贴 main.c 的“半份代码”强太多。硬石的资料也走官网 网盘模式下载时注意选择对应开发板型号。安富莱是更老牌的嵌入式开发板厂商它们的论坛里沉淀了大量产品级的设计讨论。安富莱的板子资料不像正点原子那样张扬但是深度是够的尤其是 RTOS、GUI、网络协议栈方面的综合例程几乎是全网最系统的。你想在 STM32 上跑复杂应用去安富莱论坛翻帖子经常能挖到宝。这两家的共同特点是资料不走“傻瓜式教程”路线而是偏向“工程参考”。适合有一定基础、想做产品级方案的工程师不适合完全零基础的新手。我用一个表把这几家国内厂商的特点列出来方便你对号入座厂商资料风格最适合的场景特色资源正点原子系统、教程化入门学习、毕设标准库/HAL 例程、视频、手册野火细致、原理讲透深入理解外设库开发指南、文档讲解硬石工程化、电机强电机控制、进阶步进/伺服/无刷电机例程安富莱深度、产品级复杂应用、产品预研RTOS/GUI/网络综合例程3.3 B 站和公众号视频化参考怎么利用光有文档和代码还不够很多人看电路原理图和代码对不上号这时候就需要视频讲解。B 站上正点原子、野火的官方账号都有整套的 STM32 教学视频搜索“芯片型号 教程”基本都能找到。比如你想找“stm32 移植 lvgl”直接搜“STM32 LVGL 移植教程”会有很多基于野火或正点原子屏幕的实操视频跟着点一遍比自己瞎配省几个小时。另外一些技术公众号也值得关注比如“嵌入式专栏”“一口 Linux”“strongerHuang”这类号经常发布整理好的“STM32 参考设计资源合集”“某某外设驱动的完整实现”。公众号的搜索功能可能不太好用我的办法是直接用微信搜一搜输入“STM32 参考设计”或“STM32 工程模板”会出很多文章挑发布时间新、阅读量高的看。视频能补足文档里缺失的“过程感”但注意看视频的时候别光盯着屏幕要跟着把电路图打开对照不然看完就忘。4. 开源社区从一块面包板到完整小工程的参考乐园4.1 立创开源硬件平台电路级参考设计的大本营国内做电子硬件开源立创开源硬件平台OSHWHub是我目前见过资源密度最高的地方。你搜索“STM32”能翻出大量带完整原理图和 PCB 的开源工程小到最小系统板大到四轴飞行器、智能小车、NAS 主板应有尽有。这个平台最大的好处是工程的原理图、PCB、BOM 可以在线直接看还能一键导入立创 EDA 编辑。等于说你把别人的参考设计“克隆”下来之后可以直接基于它改不用重新画。之前有人问“tp4056 参考设计去哪找”在立创开源平台一搜充电电路工程多得是很多连 3D 预览和测试说明都配好了直接照着打样就行。另一个实用场景是毕业设计。比如“stm32 智能小车”“基于 stm32 的智能台灯”“stm32 鱼缸”这类项目在立创开源平台上都能找到从头到尾的完整工程。下载下来先看 README再看有没有配套代码链接很多作者会把固件放到 Gitee 上这就形成了一个完整的参考设计链。不过要注意开源工程质量参差不齐。有的工程原理图画得很漂亮但 BOM 里选型不合理或者 PCB 根本没有做过信号完整性评估。所以下载之后一定要自己过一遍关键电路至少把电源部分、复位电路、晶振电路核对一遍再打样别直接照抄。4.2 Gitee 与 GitHub软件代码参考的主战场要找代码级别的参考设计国内优先考虑 Gitee国际项目再上 GitHub。Gitee 上有很多人把 STM32 常用外设驱动、中间件移植、完整项目开源出来搜索关键词要注意中英文混排比如“STM32 HAL 库例程”“STM32 LVGL 移植”“STM32 HTTP 服务器”。讲几个具体场景有人问“stm32 http库怎么选”在 Gitee 上搜“STM32 HTTP Client”能翻到封装好的库配合 ESP8266 或 ESP32 模块的使用例程都有。有人问“stm32 使用 at指令连接 esp32c6”这类代码在 Gitee 上也有不少搜索“STM32 ESP32 AT”就能看到具体的串口指令封装。GitHub 上则是国际项目更丰富比如著名的开源 FOC 项目 SimpleFOC、开源 GUI 库 LVGL 的官方仓库以及各种 STM32 外设驱动库。GitHub 的搜索技巧是在搜索框里用限定语法比如STM32F4 HAL usb language:c能快速过滤出 C 语言的 HAL 库实现。下载 GitHub 仓库时如果太大导致失败可以只下载某个子目录或者用镜像站点这个就不展开说了。看到这里你可能会问Gitee 和 GitHub 上的这份参考设计跟官方那份有什么区别我的体会是官方案例是“标准答案”保证能跑但偏底层开源社区的方案是“民间解法”通常整合了具体模块、具体应用场景更接近真实项目但质量需要自己甄别。最好的做法是先跑官方案例确认外设没理解错再到开源社区找符合你应用场景的整合代码。4.3 CSDN、电子发烧友、21ic 的取舍这些老牌技术社区依然是重要的资源补充地尤其是搜索“某型号 某模块 完整代码”这类长尾词时CSDN 的结果通常排在最前面。电子发烧友和 21ic 的下载频道有大量原理图、PCB 工程和技术文档很多是工程师自己上传的覆盖面很广。但我必须提醒一句社区下载的资源血统不纯。很可能原作者是从别处转载的文件不全甚至里面带病毒宏早期有人传过带宏病毒的文档。我的处理原则是社区资料用来“启发思路”不直接当生产依据。比如“stm32 报站程序完整代码”这类明显是别人做过的项目从社区下载下来学习整体框架没问题但你要用的具体协议、具体硬件还是得自己重新适配。另外注意 CSDN 的资源下载经常要求积分或会员。我见过有人为了下一个小 demo 充值了几十块钱其实同款资源在 Gitee 上通常是免费的。我的建议是先在标题里带“完整”“开源”的免费渠道找找不到再考虑用积分换。还有一个更快的办法直接用标题去 Gitee 搜很多 CSDN 的付费资源其实是搬运自 Gitee 的开源仓库。5. 实操参照超声波测距参考设计怎么在一小时内找齐5.1 拆解需求列出一份“找料清单”光讲平台不讲流程等于白讲我用一个最经典的“stm32 超声波测距”需求把从零找齐参考设计的完整过程走一遍给你看。超声波测距的硬件链路其实很清晰MCU 的某个 GPIO 输出一个至少 10us 的高电平给超声波模块的 Trig 引脚模块内部发送超声波并等待回波回波到达后 Echo 引脚输出一段高电平高电平的持续时间正比于前方障碍物的距离。测距公式常用的是距离 高电平时间 × 声速 / 2常温下声速约 340 m/s也就是 0.034 cm/us所以如果测得 Echo 高电平时间是 58us距离大约就是 1cm。实际工程中更常见的写法是distance_cm (float)time_us * 0.034 / 2.0f;或者用查表法和经验系数 58 去换算。这个公式精度不算高但作为参考设计拷贝过来用完全够。基于这个原理你需要找的参考设计就三类超声波模块本身比如 HC-SR04的电路接线参考以及电平转换方案MCU 端生成 Trig 脉冲、测量 Echo 脉宽的代码重点看定时器输入捕获或外部中断 定时器结果显示部分串口打印、OLED 显示或者 LCD 显示这部分决定了代码里要不要接 I2C、SPI 驱动列出清单后你就能有的放矢地搜了。5.2 按平台顺序走一遍搜索路线第一步打开 ST 的 Cube 固件包找到 TIM Input Capture 的官方例程。路径在 STM32Cube_FW_F1 的Projects/STM32F103C8T6-EVAL/Examples/TIM/TIM_InputCapture。这一步是确认定时器捕获高电平脉宽的标准写法官方代码用的是“测量两个边沿之间的时间”你把它理解成测量 Echo 高电平的开始到结束就行。第二步去正点原子或野火的资料包搜“超声波”相关例程。正点原子有一个超声波测距实验用的是寄存器版和 HAL 库版双版本里面把 HC-SR04 的 Trig 和 Echo 引脚配置、定时器捕获通道匹配都写好了。野火也有类似的例程实现方式略有差异正好拿来做对比看看哪种捕获配置更稳定。第三步去立创开源平台搜“STM32 超声波 测距”这一步主要是找完整的电路设计。你会看到有工程把 HC-SR04 模块直接通过排针插在板子上也有工程把超声波探头和控制电路集成在 PCB 上。如果你希望做成一个小产品而不是插面包板后者就是你要的参考。第四步去 CSDN 或电子发烧友搜“STM32 超声波测距 OLED”用来找代码层面的显示整合方案。这个关键词能搜出很多带完整代码的博客你主要参考它的显示部分比如如何把计算出来的距离实时刷新到 OLED 上。这样说起来好像步骤很多实际熟练之后半小时内就能把资料齐。关键是每一步之前都启动一个文件夹按照“官方、板厂、开源、社区”四个子目录分类存放后面整理的时候才不会乱。5.3 如何判断这套参考设计是不是靠谱参考设计下载了一堆最后要能变成你自己的东西靠的是“验证三步法”。第一看代码能不能编译过。打开工程直接编译报错多的直接排除不要指望修复别人的烂代码能学到东西。第二看引脚定义是否清晰。把代码里的 GPIO 配置和原理图上的网络标号对照一下如果作者连引脚注释都写得清清楚楚这个参考设计可信度就高。第三看有没有实际运行效果。很多参考设计光有代码没有测试截图或视频这种只能作为思路参考。超声波测距还有一个容易踩的坑就是电平转换。HC-SR04 模块的 Echo 引脚输出高电平是 5V而 STM32 的 GPIO 耐压虽然是 5V 容忍但直接接多多少少有一定风险尤其是供电电压比较极限的时候。正规的参考设计一般会用两个电阻分压把 Echo 信号分到 3.3V 以下再接 MCU或者用电平转换芯片。我在立创开源平台上看到过好几个工程原理图里直接就没有这个分压网络如果照着打样长期运行稳定性会有隐患。这就是为什么我强调“参考设计也要带脑子看”不是别人开源了就是完美的。6. 常遇到的问题与排查建议6.1 下载和版本问题排雷找参考资料时遇到最多的问题就是下载和版本兼容。正点原子、野火的网盘资料一般很大动辄几个 GB解压的时候要留意是否有分卷压缩包。压缩包密码通常在官网资料下载页不在网盘说明里找不到密码就回官网仔细看。CSDN 的资源如果显示“积分不足”先别急着充值复制标题去 Gitee 搜免费版大概率有。版本兼容问题分两块。第一块是 Keil 和 CubeMX 的工具链版本。老例程可能是用 Keil 4 建的用 Keil 5 打开会提示转换转换后编译报错很正常别慌。还有 AC5 和 AC6 编译器差异也大AC5 的代码直接切到 AC6 经常报“unknown type name”这类错误建议下载资料时优先选标注了“AC5/AC6 兼容”或者“HAL 库新版”的。第二块是固件包版本CubeMX 生成工程时选择的固件包版本跟你下载的参考例程版本最好一致不一致的差异点主要在引脚复用函数名和时钟配置方式上对新手来说排错成本很高。6.2 原理图、板子与代码对不上怎么办这个坑我踩得最多。很多参考设计是你下载下来是旧版本作者的板子已经改过好几版但代码还是第一版的硬件配置。这会导致你照着最新原理图核对代码发现 GPIO 对不上。我的解决办法是一旦发现对不上优先以代码为准同时修改原理图。因为代码是可以直接验证的原理图是一个静态设计你把板子焊错了再飞线调试成本远高于改代码。还有一类问题出现在“stm32 芯片第一脚怎么确认”上。不同封装第一脚的位置不同原理图的引脚编号和 PCB 封装符号要对照看。数据手册里都有明确的俯视图和侧视图LQFP 封装通常是圆点标记第一脚然后逆时针排。如果你下载的参考设计里丝印上没有圆点就去看 PCB 文件里封装库的 1 脚定义。这块千万别猜猜错了上电直接烧芯片。6.3 代码质量的快速判断法现在网上的代码质量是“薛定谔的好”——没编译之前你永远不知道是好是坏。我有一套判断方法先看文件头注释如果作者写了日期、作者、功能描述、适用硬件型号大概率是认真维护过的如果就是一段裸代码贴出来连 main 函数都找不全果断放弃。然后看 README有 README 的工程通常能告诉你“这是什么、怎么用、依赖什么”没有 README 的工程即使代码跑通了想改造成自己的项目也非常费劲。最后看更新时间超过三年的例程如果跑不通很可能是库版本太老别花时间硬调直接找新版本。6.4 建立自己的参考设计资料库说了这么多最后给你一个提升长期效率的建议别把下载的参考设计随手丢进“新建文件夹”而是建立一个自己的资料索引库。我自己的目录结构是STM32_Reference/ ├── 01_ST_Official/ │ ├── AN/ │ ├── Cube_FW/ │ └── Evaluation_Board/ ├── 02_DevBoard_Vendors/ │ ├── Alientek/ │ ├── EBF/ │ └── Armfly/ ├── 03_Open_Hardware/ │ ├── OSHWHub_projects/ │ └── Gitee_repos/ └── 04_Community_Articles/每个子目录里放一个README.md或者下载链接.txt记录这个资料的来源、日期、用途、是否验证过。这样做的好处是三个月后你想复用某个外设驱动时不用再从零搜索直接翻自己的资料库索引。我靠这个习惯复用了至少二十次自己存过的参考设计每次都省下大量重复搜索、重复试错的时间。回到开头那个问题“STM32 参考设计去哪找”我现在再回答一遍不会只说一个网站而是会说先到官方找标准答案再到国内板厂找中文教程然后去开源社区找完整工程最后在技术社区补充碎片知识。把这四层平台配合使用再加上一套自己的资料管理方法你找参考设计这件事就能真正做到又快又稳。