摘要:STM32CubeMX 是 ST 意法半导体近几年来大力推荐的 STM32 芯片图形化配置工具, 允许用户使用图形化向导生成 C 初始化代码,可以大大减轻开发工作,时间和费用。
STM32CubeMX有以下几个特点:
- 直观的选择 MCU型号,可指定系列、封装、外设数量等条件
- 微控制器图形化配置
- 自动处理引脚冲突
- 动态设置时钟树,生成系统时钟配置代码
- 可以动态设置外围和中间件模式和初始化
- 功耗预测
- C 代码工程生成器覆盖了 STM32 微控制器初始化编译软件,如 IAR, KEIL, GCC。
- 可以独立使用或者作为 Eclipse 插件使用
一、使用 STM32CubeMX 工具配置工程模板
配置工程的一般步骤为:
-
工程初步建立和保存
-
RCC 设置
-
时钟系统(时钟树) 配置
-
SYS中配置调试模式(常用SWD)
-
GPIO 功能引脚配置
-
配置Timer
-
生成工程源码
-
编写用户代码
二、详细配置流程(以STM32F103C8Tx为例)
接下来我们将按照上面 的步骤,依次教大家使用 STM32CubeMX 工具生成一个完整的工程。
注意:使用STM32CubeMX的时候尽量把自己的代码与自动生成的代码放到不同的文件中,避免在导出的时候不小心覆盖掉,而且这样方便后边自己的改动与移植,相当于业务层直接被剥离出来了,换芯片的时候,你只需要用CubeMX配一下新的工程,然后把自己的业务层复制进去,然后编译,修改报错,测试。
1、工程初步建立和保存
- 工程名必须要配置。
- 堆栈配置,一般情况下单片机吧堆区设置为0,栈区根据情况设置,设置的如果太小,会出现奇怪的问题,比如函数调用的异常。
- 记得保存一下。


2、RCC 设置

参数含义
- 选项 High Speed Clock( HSE)用来配置HSE;
1.1 BYPASS Clock Source 旁路时钟源,直接通过外部提供一个可靠
的 4-26MHz 时钟作为 HSE。
1.2 也就是不使用使用晶振/陶瓷振荡器, - 选项 Low Speed Clock( LSE)用来配置 LSE;
- 选项 Master Clock Output 1 用来选择是否使能 MCO1 引脚时钟输出;
- 选项 Master Clock Output 2 用来选择是否使能 MCO2 引脚时钟输出;
- 选项 Audio Clock Input( I2S_CKIN)用来选择是否从 I2S_CKIN(PC9)输入I2S时钟;
3、时钟配置
- 时钟源参数设置: HSE 或者 HSI 配置。这里我们选择 HSE 为时钟源,所以我们之前必
- 须在 RCC 配置中我们开启 HSE。
- 时钟源选择: HSE 还是 HSI。这里我们配置选择器选择 HSE 即可。
- PLL 分频系数 M 配置。
- 主 PLL 倍频系数 N 配置。
- 主 PLL 分频系数 P 配置。
- 系统时钟时钟源选择: PLL,HSI 还是 HSE。 这里毫无疑问,我们选择 PLL,选择器选择PLLCLK 即可。

4、SYS配置
-
配置debug模式:选择Trace Asynchronous Sw(SWD模式)
-
如果要使用FreeRtos,HAL库的Timebase Source 不能使用SysTick,因为FreeRtos需要还是用。

5、配置GPIO

6、配置Timer
T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK
其中,TIMxCLK是其时钟频率,若是晶振为8MHz的,一般为72MHz
- 配置NVIC Interrupt Table
- 配置NVIC Setting 打开 global interrupt

T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK
= (100 * 7200 )/7200000 = 0.1s = 100 ms

7、生成工程源码

8、IAR打开工程
打开工程后做出如下修改:
- 因为CubeMX生成的工程默认使用的是STLINK,而且我们开发使用的是J-Liink,所以需要去IAR中配置下。

- 为了调试方便,我们要把编译优化关掉,不然断点不好打,有些地方没法单步调试。
