STM32WL开发之LORA评估板上通过GPIO控制LED

编程入门 行业动态 更新时间:2024-10-10 08:24:20

STM32WL开发之LORA评估<a href=https://www.elefans.com/category/jswz/34/1767659.html style=板上通过GPIO控制LED"/>

STM32WL开发之LORA评估板上通过GPIO控制LED

前言:在前一篇《STM32WL开发之LORA开发环境及其Demo例程介绍》中已经对LM401评估板、开发环境以及开发所用Demo例程做了简要介绍。从本文开始,将基于LM401评估板进行相关外设的学习研究。

STM32WLE5的GPIO介绍

STM32WLE5引脚说明

GPIO是通用输入/输出端口的简称,用于感知外界信号(输入模式),控制外部设备(输出模式),是STM32WL的一种外设,与芯片的大部分引脚直接挂钩。这里的重点就是,GPIO一定是程序可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。

STM32WLE5CB芯片为48脚芯片,如下图所示:

由上图可知,并不是所有的引脚都是GPIO引脚,STM32WL的 引脚可以分为下面几类:

  1. 电源引脚:引脚图中的 VDD、VDDA、VBAT、VDDPA、VDDRF 等都属于电源引脚。
  2. 晶振引脚:引脚图中的 PC14、PC15 和 OSC_IN、OSC_OUT 都属于晶振引脚,包括主晶振IO和RTC晶振IO,不过它们还可以作为普通引脚使用。
  3. 复位引脚:引脚图中的 NRST 属于复位引脚,不做其他功能使用。
  4. 下载引脚:引脚图中的 PA13、PA14、PA15、PB3 和 PB4 属于 JTAG 或SW 下载引脚。不过它们还可以作为普通引脚或者特殊功能使用,具体的功能可以查看芯片数据手册,里面都会有附加功能说明。当然,STM32WL 的串口功能引脚也是可以作为下载引脚使用。
  5. BOOT 引脚:引脚图中的 PH3-BOOT0属于 BOOT 引脚。

以上五部分IO组成的系统我们可以称为是最小系统。

GPIO 引脚:引脚图中的 PA、PB、PC等均属于 GPIO 引脚。从引脚图可以看出,GPIO 占用了 STM32WL 芯片大部分的引脚。并且每一个端口最多16个引脚,比如 PA 端口,它有 PA0-PA15。

STM32WL的大部分引脚除了当GPIO使用之外,还可以复用为外设功能引脚。一般来说其用途可以做如下划分:

  1. 专用器件接到专用的总线上,比如I2C, SPI, SDIO, FSMC, DCMI等这些总线的器件需要接到专用的IO上。
  2. 普通的元器件接到GPIO上,比如蜂鸣器,LED,按键等元器件用普通的GPIO即可。
  3. 如果还有剩余,可以根据项目需要引出或不引出均可。

那么,具体每个引脚的功能信息,可以看下图。

   

如上所示,从数据手册中我们可以获取引脚的名字、引脚类型、引脚容忍的电压值和引脚复用功能等信息。

GPIO功能框图

每个GPIO内部都有这样的一个电路结构,这个结构的功能原理网上介绍的很多,这里就不再赘述。

上述的GPIO功能框图介绍,可以参考网上的文章,比如:

GPIO相关配置寄存器

每组GPIO端口含下面10个寄存器,它们可以控制一组GPIO的各个IO口。

  1. 一个端口模式寄存器(GPIOx_MODER)
  2. 一个端口输出类型寄存器(GPIOx_OTYPER)
  3. 一个端口输出速度寄存器(GPIOx_OSPEEDR)
  4. 一个端口上拉下拉寄存器(GPIOx_PUPDR)
  5. 一个端口输入数据寄存器(GPIOx_IDR)
  6. 一个端口输出数据寄存器(GPIOx_ODR)
  7. 一个端口置位/复位寄存器(GPIOx_BSRR)
  8. 一个端口配置锁存寄存器(GPIOx_LCKR)
  9. 两个复用功能寄存器(低位GPIOx_AFRL & GPIOx_AFRH)

下面介绍一下本文需要用到的两个寄存器:

1、GPIO端口模式寄存器

查看参考手册上的GPIO端口模式寄存器,如下:

       由此可知STM32WLE5支持四种工作模式:

       00:输入

       01:通用输出模式

       10:复用功能模式

       11:模拟模式(复位状态)

2、端口输出类型寄存器

查看参考手册上的GPIO端口输出类型寄存器,如下:

由此可知,输出类型分为:

0:推挽输出(复位状态)

1:开漏输出

基于GPIO控制的点灯程序设计

上面已介绍了GPIO的相关知识,本部分将基于LM401评估的设计及SubGHz_Phy_PingPong例程,介绍一下点亮LED灯的实现过程。

系统时钟配置

作为低功耗处理器,STM32WL一般用MSI时钟作为系统主时钟,默认使用最高的48MHz频率。配置如下:

PS:这里配置LSE时钟,主要是为RTC使用,本例程中的HAL_Delay()函数也有使用。

GPIO端口配置

由开发板的原理图可知,LED灯的设计连接如下:

看上图,开发板上带了三个LED灯,分别连接到GPIO的PB3,PB4, PB5端口。

本文以点亮LED1为例,初始化PB5端口。SDK中的LED灯初始化函数是BSP_LED_Init(), 具体实现如下:

LED闪灯程序

本文中设计一个LED灯每隔500ms闪烁的程序,那么SubGHz_Phy_PingPong例程中的具体函数调用及实现代码如下:

以上就是基于开发板SDK实现的普通GPIO控制LED闪灯的程序。

闪灯的实现方式有两种,一种就是上图中直接调用LED状态翻转函数实现,具体实现细节如下:

另一种是直接调用GPIO的Write函数,分别写入1或0,以实现LED灯的亮或灭。比如:

写入1的调用是:

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);

写入0的调用是:

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);

固件编译与烧写测试

程序编写完成,按下图所示,点击“编译”和“下载”图标即可完成相应的固件编译和烧写工作。烧写完成即可看到蓝灯闪烁的效果。

如果烧写失败,请检查如下设置是否一致:

PS:基于STM32WLE5的评估板上通过GPIO控制LED闪灯的工程代码下载地址:

链接:

提取码:2wey

STM32WLEX的参考手册地址:

链接: 
提取码:y1k5

STM32WLE5CB的数据手册:

链接: 
提取码:1vd7

更多推荐

STM32WL开发之LORA评估板上通过GPIO控制LED

本文发布于:2024-03-11 23:04:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1730135.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:板上   LORA   STM32WL   GPIO   LED

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!