使用STM32CubeMX工具配置工程步骤

摘要:STM32CubeMX 是 ST 意法半导体近几年来大力推荐的 STM32 芯片图形化配置工具, 允许用户使用图形化向导生成 C 初始化代码,可以大大减轻开发工作,时间和费用。

STM32CubeMX有以下几个特点:

  1. 直观的选择 MCU型号,可指定系列、封装、外设数量等条件
  2. 微控制器图形化配置
  3. 自动处理引脚冲突
  4. 动态设置时钟树,生成系统时钟配置代码
  5. 可以动态设置外围和中间件模式和初始化
  6. 功耗预测
  7. C 代码工程生成器覆盖了 STM32 微控制器初始化编译软件,如 IAR, KEIL, GCC。
  8. 可以独立使用或者作为 Eclipse 插件使用

一、使用 STM32CubeMX 工具配置工程模板

配置工程的一般步骤为:

  1. 工程初步建立和保存

  2. RCC 设置

  3. 时钟系统(时钟树) 配置

  4. SYS中配置调试模式(常用SWD)

  5. GPIO 功能引脚配置

  6. 配置Timer

  7. 生成工程源码

  8. 编写用户代码

二、详细配置流程(以STM32F103C8Tx为例)

接下来我们将按照上面 的步骤,依次教大家使用 STM32CubeMX 工具生成一个完整的工程。

注意:使用STM32CubeMX的时候尽量把自己的代码与自动生成的代码放到不同的文件中,避免在导出的时候不小心覆盖掉,而且这样方便后边自己的改动与移植,相当于业务层直接被剥离出来了,换芯片的时候,你只需要用CubeMX配一下新的工程,然后把自己的业务层复制进去,然后编译,修改报错,测试。

1、工程初步建立和保存

  1. 工程名必须要配置。
  2. 堆栈配置,一般情况下单片机吧堆区设置为0,栈区根据情况设置,设置的如果太小,会出现奇怪的问题,比如函数调用的异常。
  3. 记得保存一下。
project
1571643224267

2、RCC 设置


参数含义

  1. 选项 High Speed Clock( HSE)用来配置HSE;
    1.1 BYPASS Clock Source 旁路时钟源,直接通过外部提供一个可靠
    的 4-26MHz 时钟作为 HSE。
    1.2 也就是不使用使用晶振/陶瓷振荡器,
  2. 选项 Low Speed Clock( LSE)用来配置 LSE;
  3. 选项 Master Clock Output 1 用来选择是否使能 MCO1 引脚时钟输出;
  4. 选项 Master Clock Output 2 用来选择是否使能 MCO2 引脚时钟输出;
  5. 选项 Audio Clock Input( I2S_CKIN)用来选择是否从 I2S_CKIN(PC9)输入I2S时钟;

3、时钟配置

  1. 时钟源参数设置: HSE 或者 HSI 配置。这里我们选择 HSE 为时钟源,所以我们之前必
  2. 须在 RCC 配置中我们开启 HSE。
  3. 时钟源选择: HSE 还是 HSI。这里我们配置选择器选择 HSE 即可。
  4. PLL 分频系数 M 配置。
  5. 主 PLL 倍频系数 N 配置。
  6. 主 PLL 分频系数 P 配置。
  7. 系统时钟时钟源选择: PLL,HSI 还是 HSE。 这里毫无疑问,我们选择 PLL,选择器选择PLLCLK 即可。

4、SYS配置

  1. 配置debug模式:选择Trace Asynchronous Sw(SWD模式)

  2. 如果要使用FreeRtos,HAL库的Timebase Source 不能使用SysTick,因为FreeRtos需要还是用。

5、配置GPIO

6、配置Timer

T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK
其中,TIMxCLK是其时钟频率,若是晶振为8MHz的,一般为72MHz

  1. 配置NVIC Interrupt Table
  2. 配置NVIC Setting 打开 global interrupt

T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK

= (100 * 7200 )/7200000 = 0.1s = 100 ms

7、生成工程源码

8、IAR打开工程

打开工程后做出如下修改:

  1. 因为CubeMX生成的工程默认使用的是STLINK,而且我们开发使用的是J-Liink,所以需要去IAR中配置下。
  1. 为了调试方便,我们要把编译优化关掉,不然断点不好打,有些地方没法单步调试。

9、编译下载并调试