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
关注公众号,发送关键字:Java车牌识别,获取项目源码。