2.使用hal库点亮LED灯

1. 开发环境

开发板:NUCLEO L152(ST官方提供的STM32L152RE开发板)
开发环境:STM32CubeMX 5.5.0 + Keil MDK 5.28

注意,ST官方的这块开发板这块开发板有两个坑:
1)没有焊接外部晶振。如果要使用更稳定的外部晶振作为时钟源,需要先把缺的C22、C25、C26、C33、C34这几个电容以及C29这个电容旁边缺的那两个零Ω电阻补焊上。最后再补焊上一个8M的外部晶振即可。电容的值可以从开发板的BOM料表查看。其中,C22=C25=2.2uF(这两个电容的封装均是1206),C26=4.7uF(封装是1206),C33=C34=20pF(封装是0603)。如果没有零Ω电阻(两个零Ω电阻的封装也是0603),可以直接用焊锡将那两个零Ω电阻的地方短路掉即可。开发板需要补焊的元件的位置如下图所示:
在这里插入图片描述
但是如果你不用外部晶振作为时钟源,那么可以不用焊接上面的几个电容和电阻。

2)SPI1的SCK引脚和LED2共用一个PA5引脚。如果要使用SPI1,那么必须断开PA5和LED2的连接,即将开发板背部的SB21零Ω电阻去掉即可。

当然,如果你用的是正点原子或者秉火等这些厂家提供的板子,则不存在上面的问题。

2.准备裸机工程

2.1 在STM32CubeMX中安装对应芯片的hal库

打开STM32CubeMX,按照文章《hal库介绍及开发软件安装》中4.2小节介绍的方法,安装STM32L1系列的hal库。如果你已经安装过了则不用再安装,直接忽略本小节内容即可。或者你手头上的开发板使用的是其它的芯片(比如STM32F103),则你只需要安装对应的hal库(比如STM32F1系列的hal库)即可。

2.2 生成点亮LED灯的裸机工程

本次实验,在板子上的PC13引脚外接一个LED灯,因此将STM32L152RE的PC13引脚作为LED灯引脚。

首先打开STM32CubeMX,然后依次按照如下图所示的步骤新建一个工程:
在这里插入图片描述

在这里插入图片描述

按照上图双击之后,便可以进入到配置界面了,如下图所示:
在这里插入图片描述
使用STM32CubeMX配置和初始化外设然后生成keil工程的大致步骤如下:
1)设置时钟源(使用外部时钟还是内部时钟)
2)设置时钟树
3)配置外设(如配置GPIO引脚,SPI等)
4)配置生成的工程选项(生成keil工程还是IAR工程)
5)配置生成的代码量(全部hal库都添加到工程里还是只添加需要的部分)
6)点击生成工程。

产生一个点亮LED的裸机例程步骤和上述步骤一致,下面我们依次来进行配置。

设置时钟源
按下图所示的步骤设置芯片的时钟源为使用外部晶振提供的时钟。

HSE和LSE那里有三个选项:
1)disable 表示使用内部的时钟(HSI,LSI)
2)Crystal/Ceramic Resonator 表示使用晶振/陶瓷振荡器,即用晶振产生的时钟
3)Bypass Clock Source 表示不使用晶振产生的时钟,而是直接通过外部提供的一个时钟源。

在这里插入图片描述

设置时钟树
按下图所示设置时钟树,配置使用HSE,然后设置倍频值,输出为32MHz。
在这里插入图片描述
为什么设置输出为32MHz,这个是根据STM32L152RE的数据手册得到的,数据手册第一页有如下内容:

Core: ARM® Cortex®-M3 32-bit CPU
– From 32 kHz up to 32 MHz max
– 1.25 DMIPS/MHz (Dhrystone 2.1)
– Memory protection unit

可以看到STM32L152RE的最大频率可以工作在32MHz,因此我们直接设置为最大工作频率即可。如果你的板子上用的是其它芯片,也可以根据其对应的数据手册第一页中的介绍的工作频率范围设置其频率。一般设置为最大工作频率。

配置外设(设置连接LED的引脚)
因为是外接的一个LED灯,因此配置连接LED灯的PC13引脚为推挽上拉输出,以提供足够的电压来驱动LED灯,并且配置初始化完成后PC13默认输出高电平以达到程序下载进板子后LED灯马上被点亮的效果。并且配置PC13的引脚在程序里的别名是LED。按照下图所示配置即可:
在这里插入图片描述
在这里插入图片描述
上面配置别名的作用是为了提高代码的易读性,配置了别名之后,STM32CubeMX生成代码的时候,会将PC13引脚define为LED引脚,以提高程序的易读性。

生成工程设置
按照如下图所示,设置产生keil工程:
在这里插入图片描述
生成的代码设置
按照下图所示,配置将hal库全都复制到生成的工程目录下,并且产生.c和.h文件:
在这里插入图片描述

上图中的第2步,选择将整个hal库都拷贝到生成的工程目录下,主要是为了方便后面结合RTOS使用。如果你是裸机开发,那么你在第2步的时候,可以选择Copy only the necessary library files,即只将hal库中用到的外设源码文件拷贝到工程目录下。这样生成的工程更小,而且编译时间也会少一点。

生成工程代码
如下图所示,点击GENERATE CODE直接生成一个完整的keil工程:
在这里插入图片描述

生成成功后,如下图所示,点击open project便可以使用keil打开生成的工程:
在这里插入图片描述

用keil将代码下载到板子上
用keil打开生成的工程之后,直接编译,没有错误产生,然后按照如下面几张图所示,设置一下keil:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

然后点击确定和OK后,便可以点击下载按钮,将程序下载到板子上后可以看到LED灯被点亮了,如下图所示:
在这里插入图片描述
到此我们便成功利用STM32CubeMX生成了一个点亮LED灯的裸机工程。

使用STM32HAL库点亮LED的例程中,可以使用HAL库提供的函数来配置和控制GPIO引脚。具体步骤如下: 1. 首先,在代码中引入HAL库的头文件,例如"stm32f4xx_hal.h"。 2. 初始化HAL库,包括系统时钟、GPIO引脚等配置。 3. 使用HAL库提供的函数来配置需要使用的GPIO引脚为输出模式,例如使用HAL_GPIO_Init函数。 4. 使用HAL库提供的函数来控制GPIO引脚的电平,从而点亮LED。例如使用HAL_GPIO_WritePin函数将GPIO引脚置为高电平或低电平。 这样,通过以上步骤就可以使用STM32HAL库点亮LED了。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [STM32L151C8T6基于HAL库点亮LED](https://download.csdn.net/download/David1230011/12746850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [STM32_HAL库_点亮LED](https://blog.csdn.net/m0_73066573/article/details/130649805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值