STM32L051 测试 (一、使用 CubeMX 生成工程文件 — ST 系列芯片通用)
前言
因为以前的芯片涨价,选择了 STM32L051 作为替换 STM32F103 的芯片,所以做了一个基础测试的栏目。
使用 L051 测试,当然得使用 STM32CubeMX 工具,
新建工程,选择对应芯片,然后设置下相应的引脚(需要根据自己的原理图)。
1、时钟相关
1.1 RCC
栏目中的选项如下:
Disable(禁用)
BYPASS Clock Source(旁路时钟源)
Crystal/Ceramic Resonator(晶体/陶瓷晶振)
如上图一样有外部晶振选择 Crystal/Ceramic Resonator
1.2 Clock Configuration 时钟设置
在设置定时器参数之前,需要先确定系统的时钟,在这里我们第一次测试,用不到低功耗,所以将系统时钟设置为 32MHZ 最大值,如下图:
2、调试相关
<font color=#0033FF>在 SYS 中选择 SWD 烧录模式 Debug Serial Wire</font>
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)
公式如下:
比如上图中的定时器,就设置成了 定时时间 1S,每 1S 就会产生一次中断。
如何理解这个时间:
在本次测试中,其中使用 TIM2,TIM21 2 个通用定时器,TIM2 设置成为 1S,作为普通逻辑的定时器,TIM21 设置为 1ms 作为按钮的定时器:
3.4 IWDG 独立看门狗
产品生产往往会有意想不到的情况,在程序设计可能会有问题,在硬件上也可能会遇到特殊情况,看门狗的加入往往会对产品差错起到一定的帮助作用。
选择 IWDG,使能独立看门狗:
配置看门狗的时间:
这里重装载值我设置了 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 生成工程即可,生成工程说明就到这里,下一篇我们会根据生成的工程文件进行对应的修改进行测试。
版权声明: 本文为 InfoQ 作者【矜辰所致】的原创文章。
原文链接:【http://xie.infoq.cn/article/fc5e31ea41e0b33f64b9ee537】。文章转载请联系作者。
评论