> 文档中心 > STM32L051测试 (一、使用CubeMX生成工程文件 — ST系列芯片通用)

STM32L051测试 (一、使用CubeMX生成工程文件 — ST系列芯片通用)

本文也适合STM32CubeMX 支持的所有芯片的设置..调整文章结构,添加图文说明    2022.2

CubeMX生成工程步骤

  • 前言
  • 1、时钟相关
    • 1.1 RCC
    • 1.2 Clock Configuration 时钟设置
  • 2、调试相关
  • 3、外设相关
    • 3.1 USART 串口
    • 3.2 GPIO(LED、按键)
    • 3.3 TIM 定时器
      • 3.3.1 定时器时间计算说明
    • 3.4 IWDG 独立看门狗
  • 4、生成工程
    • 4.1 Project 栏目
    • 4.2 Code Generator栏目

前言

板子终于到手,开始使用L051测试,当然得使用STM32CubeMX工具,

新建工程,选择对应芯片,然后设置下相应的引脚(需要根据自己的原理图)。

调整文章结构,添加图文说明,使得理解更加简单,步骤更加明了。

1、时钟相关

1.1 RCC

在这里插入图片描述栏目中的选项如下:

  • Disable(禁用)
  • BYPASS Clock Source(旁路时钟源)
  • Crystal/Ceramic Resonator(晶体/陶瓷晶振)

如上图一样有外部晶振选择 Crystal/Ceramic Resonator

1.2 Clock Configuration 时钟设置

在设置定时器参数之前,需要先确定系统的时钟,在这里我们第一次测试,用不到低功耗,所以将系统时钟设置为32MHZ最大值,如下图:
在这里插入图片描述

2、调试相关

在SYS中选择 SWD烧录模式 Debug Serial Wire
在这里插入图片描述

3、外设相关

3.1 USART 串口

使用串口1(USART1)作为调试串口(PA9 PA10),选择Asynchronous (异步通讯模式),打开串口中断,设置好自己需要的波特率,串口1设置完成。

在这里插入图片描述
还需要使用另外一个串口与无线模块通讯,PCB图纸上使用的是(PB10 PB11),同样按照上图设置,这两个端口在STM32F103上是正常的串口3,但是在STM32L051上是LPUART1,是一个低功耗串口,这里并不需要用到它的低功耗功能,就直接和普通串口一样设置,把他当做一个普通串口使用。

3.2 GPIO(LED、按键)

LED灯设置为输出,按钮设置为输入, 选中对应的IO口,选择模式,如下图:
在这里插入图片描述

还可以对每个IO口进行设置,如下图:在这里插入图片描述

3.3 TIM 定时器

查阅资料STM32L051C8T6有5个定时器
通用定时器(TIM2、TIM21、TIM22、),基本定时器(TIM6),低功耗定时器(LPTIM1)。

因为用不到低功耗定时器,主要还是不确定低功耗定时器是否和普通定时器一样用,本次目的主要还是想先测试出效果,所以选用通用定时器,其中Clock Source 选择为 internal Clock ;在这里插入图片描述
定时器选中还有一个重要的配置:
在这里插入图片描述

3.3.1 定时器时间计算说明

在上面的时钟设置好以后,就可以设置定时器里面的ARR和PSC:

  • ARR :重装载值(auto reload register)
  • PSC :预分频器(pre-scaler)

公式如下:

//Tclk:定时器的输入时钟频率(单位MHZ)//Tout:定时器溢出时间(单位为usTout = ((arr+1*(psc+1))/Tclk ;

比如上图中的定时器,就设置成了 定时时间1S,每 1S 就会产生一次中断。

如何理解这个时间:

比如F103晶振 72M,也就是一秒计 72 00 0000 次,72 00 0000 HzPrescaler预分频值设置7200-1是因为预分频值从0开始我们把72M除以预分频值7200就是我们定时器速度,速度变为了一秒记10000次Counter Period重装载值设置为10000,也就是定时器从0开始记了10000次以后就又回归从0开始计算到10000一直循环我们定时器的速度为1秒记10000次,重装载值也刚好是10000,那么记一次重装载要的时间就是1秒,那么速度刚好是1Hz比如我们设置重装载值为1000,定时器速度是10000Hz,记一次重装载值的速度只要0.1秒也是10Hz定时器的10000除以重装载的1000也就是10,就是定时器配置成了10Hz

在本次测试中,其中使用TIM2,TIM21 2个通用定时器,TIM2设置成为1S,作为普通逻辑的定时器,TIM21设置为1ms 作为按钮的定时器:
STM32L051测试 (一、使用CubeMX生成工程文件 — ST系列芯片通用)

3.4 IWDG 独立看门狗

产品生产往往会有意想不到的情况,在程序设计可能会有问题,在硬件上也可能会遇到特殊情况,看门狗的加入往往会对产品差错起到一定的帮助作用。

选择IWDG,使能独立看门狗:
STM32L051测试 (一、使用CubeMX生成工程文件 — ST系列芯片通用)

配置看门狗的时间:
在这里插入图片描述
这里重装载值我设置了3700,是因为好计算,使能了独立看门狗以后可以在时钟图中看到独立看门狗的时钟频率为37KHZ:
在这里插入图片描述
用到几个公式:f=1/T,单位是s,单位是HZ。(其中大写字母T,表示周期,小写字母f表示频率)
看门狗 f= 看门狗时钟频率 / (预分频系数 * 重装载值) = 37000HZ / (64 * 3700)=10/64
看门狗时间 T = 6.4s
(不知道有没有算错= =!在后面测试过程中确认了,计算时正确的!

以上设置,可以把基本的功能测试使用起来。

4、生成工程

最后一步生成工程的时候,再次提醒一下,路径中不能又中文,否则会出问题!(虽然在网上看到有例子存在中文也没有问题的情况,但是自己生成的时候确实出了问题,所以改个英文路径问题不大)。

4.1 Project 栏目

项目名字,工程路径,生成工程后想要使用的IDE,堆栈大小,SDK软件包:
在这里插入图片描述

4.2 Code Generator栏目

生成工程的一些选项:
在这里插入图片描述
上图中勾选的 4个选项意思如下:

  • copy all used libraries into the project folder
    复制所有库文件(不管工程需要用到还是没用到)到生成的工程目录中。

  • generate peripheral initialization as a pair of …:
    每个外设生成独立的.C .H文件

  • keep user code when re-generating
    重新生成代码时,保留用户代码(在用户规定的书写范围内)

  • delete previously generated files when not re-generated
    删除以前生成但现在没有选择生成的文件

最后点击GENERATE CODE 生成工程即可,生成工程说明就到这里,下一篇我们会根据生成的工程文件进行对应的修改进行测试。