![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
前言 我前面的文章分析过,因为STMF103系列芯片的涨价,我更换了芯片,使用STM32L051 替换 STM32F103 系列。 最近把以前的笔记整理一下,当做记录分享。 板子到手,开始使用STM32L051测试,当然得使用STM32CubeMX工具,正好借这个机会简单的说明一下如何使用 STM32CubeMX 开发 STM32芯片。 新建工程,选择对应芯片,然后设置下相应的引脚(需要根据自己的原理图)。 本文主要在于说明使用 STM32CUbeMX 生成一个STM32 最小系统板子的工程步骤,适合所有的 STM32F STM32L 系列芯片! ' f. Z8 c3 Y/ T# O 打开STM32CubeMX ,选择好自己用的芯片,根据下面步骤进行设置: ( }, V" _' U5 h7 W( F; O
栏目中的选项如下:
如上图一样有外部晶振选择 Crystal/Ceramic Resonator " ? a# j2 G6 o
2、调试相关 在SYS中选择 SWD烧录模式 Debug Serial Wire
7 R0 `: W5 I: x8 g* K* C, R 使用串口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 ;
定时器选中还有一个重要的配置: ' w/ Y- O3 ~: j5 Y5 C( J$ Y* }
, S D3 z8 t- G) J 在上面的时钟设置好以后,就可以设置定时器里面的ARR和PSC:
公式如下:
比如上图中的定时器,就设置成了 定时时间1S,每 1S 就会产生一次中断。 如何理解这个时间: 比如F103晶振 72M,也就是一秒计 72 00 0000 次,72 00 0000 Hz# O. Z' W" c/ d* T: h7 o3 h, c Prescaler预分频值设置7200-1是因为预分频值从0开始% Z) Q, G: V2 W k# ^6 H% A. z 1 Q' x6 U2 K2 w8 c5 x' a 我们把72M除以预分频值7200就是我们定时器速度,速度变为了一秒记10000次4 {8 A. H1 ?8 m$ r , ]1 |* g; T! B/ Q' I# L Counter Period重装载值设置为10000,也就是定时器从0开始记了10000次以后就又回归从0开始计算到10000一直循环6 Q+ L; j* b6 k0 ]- W/ Z; C( a# d 我们定时器的速度为1秒记10000次,重装载值也刚好是10000,那么记一次重装载要的时间就是1秒,那么速度刚好是1Hz 比如我们设置重装载值为1000,定时器速度是10000Hz,记一次重装载值的速度只要0.1秒也是10Hz " g, C- X6 {8 s1 ^4 c9 b) O9 i 定时器的10000除以重装载的1000也就是10,就是定时器配置成了10Hz 在本次测试中,其中使用TIM2,TIM21 2个通用定时器,TIM2设置成为1S,作为普通逻辑的定时器,TIM21设置为1ms 作为按钮的定时器: * J2 g. ?' b8 w& S# G% F 3.4 IWDG 独立看门狗 产品生产往往会有意想不到的情况,在程序设计可能会有问题,在硬件上也可能会遇到特殊情况,看门狗的加入往往会对产品差错起到一定的帮助作用。 选择IWDG,使能独立看门狗: " d- ?" F9 r& ^+ S- m X7 `
配置看门狗的时间:
这里重装载值我设置了3700,是因为好计算,使能了独立看门狗以后可以在时钟图中看到独立看门狗的时钟频率为37KHZ:
用到几个公式:f=1/T,单位是s,单位是HZ。(其中大写字母T,表示周期,小写字母f表示频率) 看门狗 f= 看门狗时钟频率 / (预分频系数 * 重装载值) = 37000HZ / (64 * 3700)=10/64 看门狗时间 T = 6.4s (不知道有没有算错= =!在后面测试过程中确认了,计算时正确的!) 以上设置,可以把基本的功能测试使用起来。 7 H- s4 l. d. a( Q% o, _* }4、生成工程 最后一步生成工程的时候,再次提醒一下,路径中不能又中文,否则会出问题!(虽然在网上看到有例子存在中文也没有问题的情况,但是自己生成的时候确实出了问题,所以改个英文路径问题不大)。 7 p1 X1 X8 o4 @+ U9 D# C: q( T* F$ _: G4.1 Project 栏目 项目名字,工程路径,生成工程后想要使用的IDE,堆栈大小,SDK软件包:
4.2 Code Generator栏目 生成工程的一些选项: 0 l% T+ B* S: o* J6 I
上图中勾选的 4个选项意思如下:
最后点击GENERATE CODE 生成工程即可,生成工程说明就到这里,下一篇我们会根据生成的工程文件进行对应的修改进行测试。 转载自:矜辰所致 如有侵权请联系删除4 q |9 M) d+ A# u# ~) V |
分享一个STM32L031的串口调试程序
基于STM32L051开始添加需要的代码经验分享
STM32L051测试I2C协议设备的添加经验分享
基于STM32L051测试Flash和EEPROM的读写
基于STM32L051串口测试与Enocean模块通讯问题
基于STM32L0的EEPROM读写经验分享
基于STM32L0 ADC使用HAL库关于校准问题经验分享
【工程师笔记】汇总处
【经验之谈】基于STM32L053芯片使用STM32CUBE软件开发低功耗设备的经验分享
在 STM32L0 和 STM32L4 系列微控制器中使用 LPUART 使功耗最小