NUCLEO-L432KC 实现 GPIO 控制(STM32L432KC)

1、实验目的
了解 STM32L432KC LED 灯外围电路搭建原理;
学习 STM32CubeMX 新建工程的方法;
掌握 STM32 编程实现 LED 闪烁的编程技巧。
2、实验设计
分析 STM32L432KC LED 灯原理图可知,LED 灯连接在 PB3 引脚;
通过配置 PB3 引脚,结合驱动函数 HAL_GPIO_TogglePin()和 HAL_GPIO_WritePin(),可使用两种方式实现 LED 灯闪烁。


3、实验步骤
3.1、使用 STM32CubeMX 新建项目工程
使用 STM32CubeMX 新建项目工程,具体步骤可参见STM32控制LED灯闪烁(NB-IoT项目实战专栏—4),本博文将基于 STM32L432KC 处理器,简要讲解新建项目工程步骤。
第 1 步:选择 MCU STM32L432KC,创建 STM32CubeMX 项目工程。

第 2 步: 配置 STM32L432KC 的晶振,由上图原理图可知,STM32L432KC 处理器只有外部低速晶振接于 PC14 和 PC15 引脚,将这两个 GPIO 配置为“Crystal/Ceramic Resonator”模式。
晶振配置通常有两种模式:BYPASS Clock Source(旁路时钟源)和 Crystal/Ceramic Resonator(晶体/陶瓷晶振),区别如下:
BYPASS Clock Source(旁路时钟源):是指无需使用外部晶体时所需的芯片内部时钟驱动组件,直接从外界导入时钟信号。犹如芯片内部的驱动组件被旁路了。
Crystal/Ceramic Resonator(晶体/陶瓷晶振):该时钟源是由外部无源晶体与 MCU 内部时钟驱动电路共同配合形成,有一定的启动时间,精度较高。

第 3 步:配置 LED 灯的 GPIO,将 PB3 引脚配置“GPIO_Output”输出模式。配置初始化参数:推挽输出、默认输出低电平(初始化不让 LED 灯亮)、无上拉无下拉。

第 4 步:配置时钟。按照自己的工程要求配置时钟,本次以自动设置为例,直接将最后的频率设置为 80MHz(确定后电机回车),STM32CubeMX 会自动设置。

第 5 步:配置生成代码的一些配置。在 Project 界面设置本工程名称,选择按照什么开发工具生成项目工程,这里我们使用的是 MDK5。

在这个界面中还需要配置的是 Code Generator,这一栏中将“Generate peripheral initialization as a……”选中,这样生成的工程会把使用的资源(IIC、SPI、USART、GPIO 等)初始化代码分别放在对应名字的单独的.c 文件中,方便我们自己增删改查使用。

第 6 步:点击上面的 OK 生成工程代码。 生成工程代码成功后,可以选择打开工程目录或者直接打开工程。

选择打开工程目录。可以看到工程目录分为两个部分,一个是 MDK5 的工程目录,一个是 STM32CubeMX 的工程。STM32CubeMX 工程文件还可以用 STM32CubeMX 打开提供增加或者删除、修改本工程,非常方便。

3.2、编写 LED 闪烁代码
关于工程文件的介绍、基本 GPIO 驱动函数的查找等基础知识,本篇博文中不再赘述,感兴趣的小伙伴可参考学习STM32控制LED灯闪烁(NB-IoT项目实战专栏—4)。

第 1 步: 在 stm32l4xx_hal_def.h 文件中查找到所需的驱动函数:HAL_GPIO_TogglePin()和 HAL_GPIO_WritePin,在 stm32l4xx_hal.h 文件中查找到所需的延时函数:HAL_Delay()。


第 2 步 :了解函数的基本使用。
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)函数的功能是将某个引脚输出方波,函数各个参数说明如下:

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)函数的功能是设置拉高还是拉低某个引脚,函数各个参数说明如下:

__weak void HAL_Delay(uint32_t Delay)函数的功能是延时单位毫秒,函数各个参数说明如下:

第 3 步:编写代码,实现每隔 2 秒 LED 灯亮、闪烁。

第 4 步:编译程序,确保无误。

3.3、配置烧写参数
NUCLEO-L432KC 模块内嵌 STLINK/V2-1 烧写器,配置烧写参数,设置使用 ST-LINK 下载,设置好下图参数,点击下载程序。

3.4、烧录程序
最后烧录程序,查看效果。


本项目 STM32CubeMX 工程及代码网址见:https://download.csdn.net/download/m0_38106923/11237880
版权声明: 本文为 InfoQ 作者【不脱发的程序猿】的原创文章。
原文链接:【http://xie.infoq.cn/article/f14d6f47984551958841eabca】。文章转载请联系作者。
评论