还记得大学那会儿第一次用STM32,打开CubeMX对着满屏的配置项一脸茫然------RCC是什么?SYS又是干嘛的?GPIO怎么这么多模式?当时没人告诉我该先点哪里,我只能一个选项卡一个选项卡地瞎试,试错了就重来,折腾了一下午才把LED点起来。
现在回头想想,其实基础工程的配置根本没那么复杂,核心就三个地方:GPIO、RCC、SYS。把这仨搞明白,后面的所有外设实验就都有了落脚点。这篇咱们就聚焦这三个配置,手把手把工程跑起来。
省流版:
-
✅ 简单介绍GPIO、RCC、SYS配置
-
✅ 基础工作链接在文末
一、为什么先讲工程配置?
本系列的目标是用STM32F103C8T6核心板 ,一步步做出一个室内环境检测系统 。但不管后续要做哪个外设实验、接什么传感器,都绕不开一个基础操作------用STM32CubeMX配置一个能正常运行的工程。
万事开头难。刚开始接触的时候,缺失的知识太多,很多地方根本不知道从哪下手------晶振频率该填多少?调试接口选哪个?生成代码的时候哪些选项是干什么的?虽然现在的AI能解答不少疑惑,但实际操作上还是需要有个大概的印象才能问出正确的问题。
所以这篇咱们就把这个"开头难"给破了。跟着走一遍,以后不管做什么项目,第一步都不会再卡住。
二、先认识一下配置界面
选择完芯片之后,映入眼帘的是这样一个界面:

左侧可以看到分成很多栏配置,右侧是芯片的引脚视图,下方则是具体的功能配置区域。后续的文章会逐一介绍并实践各个模块,但这次咱们只聚焦System Core------这里是芯片本身的一些基础配置,关乎设备能不能正常跑起来。
重点要配置三个部分:GPIO、RCC、SYS。下面一个一个说。
三、GPIO配置------让引脚干活
芯片周围一圈的引脚就是GPIO(General Purpose Input/Output,通用输入输出)。我们板子上两侧的排针,就是把芯片的引脚印出来方便我们使用。

GPIO可以配置成多种模式------既能输出高低电平去控制LED、蜂鸣器,也能采集外部的高低电平信号来读取按键状态。后续所有外设功能,本质上都是基于GPIO来实现的。关于GPIO的详细功能,我们会在后续篇章中长期接触,这里先简单跟着配置,把板子上的LED点起来。
操作步骤:
找到芯片左上角的PC13 引脚------这个引脚连接着板子上的一个LED灯。直接用鼠标点击这个引脚,在弹出的菜单中选择GPIO_Output模式就行了。

就这么简单。一个GPIO输出引脚就配置好了。
四、RCC配置------给单片机一颗精准的心脏
RCC(Reset and Clock Control,复位与时钟控制)用来配置设备的外部晶振。
晶振可以理解为一个一直在跳动的器件,它提供一个稳定的时间频率------可以说是单片机的心脏。STM32这类单片机内部是有内置晶振的,但内部晶振的准确度不够高,所以大多数板子都会外接一个晶振来提高精度。

我们这块板子用的是8MHz的外部晶振。
操作步骤:
-
点击左侧的RCC选项卡

-
在右侧会看到两行配置项,分别对应高速外部晶振(HSE)和低速外部晶振(LSE)
-
高速晶振:就是单片机的主频来源,我们日常说的"跑72MHz"就是指这个
-
低速晶振:一般用于RTC时钟计数,通常固定为32.768kHz
-
-
这次我们只需要配置高速时钟晶振,在HSE 那一栏选择Crystal/Ceramic Resonator

配置完这一步还没完------还需要切换到**时钟树(Clock Configuration)**界面。

时钟树的作用是:根据硬件上实际焊接的晶振频率,通过倍频或分频,给每个功能外设分配时钟节拍。我们这里晶振是8MHz,就在时钟树的输入框里填上8。
如果觉得手动配置太麻烦,可以点一下自动配置按钮,让工具自己算------只要看看别的模块有没有报错就可以了。
五、SYS配置------告诉调试器怎么连接
SYS(System,系统配置)主要关乎系统调试和控制,落实到操作上就是选择用什么仿真器接口。

仿真器是我们用来下载和调试程序的工具,常用的接线方式有SWD 和JTAG两种。实际工程中,JTAG占用的GPIO太多,所以基本上都采用SWD方式。
序言篇推荐的JlinkOB这种简易仿真器只支持SWD,而且只支持一些入门级的单片机(比如F103系列)------对我们来说刚刚好,性价比高。
操作步骤:
-
点击左侧的SYS选项卡

-
在Debug 那一栏选择Serial Wire
搞定。
六、其他配置------导出工程前的收尾工作
以上三个核心配置完成后,还有几个细节需要设置一下:
1. 工程名称和导出格式
在Project Manager选项卡中:
-
设置工程名称
-
选择Toolchain/IDE 为Makefile(配合我们之前配置的GCC编译链使用)

2. 独立文件生成
勾选Generate peripheral initialization as a pair of '.c/.h' files per peripheral ------这个选项会让CubeMX把每个外设的代码分成独立的.c和.h文件,程序结构更清晰。强烈建议勾选,后续维护会方便很多。

全部设置完成后,点击右上角的GENERATE CODE,工程就生成好了。
七、两个重要注意事项
1. USER CODE区域
生成的代码中有很多注释标记着USER CODE BEGIN和USER CODE END。后续我们在工程中添加自己的代码时,必须写在这两种注释中间。这样才能确保以后修改CubeMX配置、重新生成代码时,我们自己写的内容不会被删掉。

2. 不要改驱动文件
尽量不要在CubeMX生成的驱动文件中添加业务代码。正确的做法是:把自己的代码放到自己新建的文件中,然后在生成的文件里调用对应的函数即可。这样层次清晰,也方便后期维护。
3. 编码格式
留意一下编译器右下角的编码格式。我们自己创建的文件,编码格式最好采用GB2312------因为GB2312方便后续通过串口输出中文数据。总之信我准没错哈哈。
像后续我们主要靠AI编程的话,可以把这些规则写到AI的系统提示词里。

这里分享一下我设计的简单规则模板,后续随着操作深入,那些需要经常提醒AI的点都可以添加到这里:
用户代码必须写在USER CODE BEGIN/END注释之间
不要修改CubeMX生成的驱动文件
新建源文件使用GB2312编码
(后续按需追加...)
到这儿,一个完整的STM32CubeMX基础工程就配置好了。下一篇我们进入真正的开发环境配置篇,把自动下载脚本跑起来,让LED真正开始闪烁。

资源包放在文末,解压即用,里面包含了本篇用配置的工程。有任何问题欢迎在评论区留言交流~
通过网盘分享的文件:基础工程.rar 链接: https://pan.baidu.com/s/1tETbxsL1g3pMVFBG1mcwmA 提取码: pxta --来自百度网盘超级会员v4的分享
