HAL库LED点灯

一、学习内容

一.  了解并掌握HAL库函数开发方法。安装 stm32CubeMX,配合Keil,使用HAL库方式完成下列任务:

1、用GPIO端口完成2只LED灯的周期闪烁。

2、接上,再用GPIO端某一管脚接2个开关(用杜邦线模拟代替)。采用中断模式编程,当2分开关接高电平时,对应的两个LED灯停止工作(即停止周期性闪烁),接低电平时,恢复工作。

二. 在没有示波器条件下,使用Keil的软件仿真逻辑分析仪功能观察LED管脚的时序波形,分析上面作业按键中断时,LED灯的波形变化情况。

二、STM32CubMX和HAL库函数开发

1、STM32CubMX

STM32CubeMX是STMicroelectronics推出的一款强大的图形化配置工具,用于快速开发STM32微控制器的嵌入式应用程序。它提供了一种简单而直观的方式来配置和初始化STM32微控制器,减少了开发过程中的工作量和时间。
主要特点:

图形化界面:STM32CubeMX提供了直观的图形化界面,用户可以通过简单的拖拽和点击来进行配置和初始化操作,无需编写繁琐的代码。

自动代码生成:根据用户在图形界面中的配置,STM32CubeMX能够自动生成相应的初始化代码,包括时钟配置、引脚配置、外设初始化等。这大大简化了开发者的工作,减少了出错的可能性。

 支持多种STM32系列:STM32CubeMX支持多个STM32系列微控制器,包括STM32F0、STM32F1、STM32F2、STM32F3、STM32F4、STM32F7和STM32L4等。用户可以根据自己的需求选择不同系列的微控制器进行开发。

 集成外设库:STM32CubeMX集成了STMicroelectronics提供的STM32Cube HAL库,这是一套丰富而强大的外设驱动库。用户可以在图形界面中选择需要的外设,并自动配置和初始化相应的库函数。

 连接外部中间件和库:STM32CubeMX还支持连接外部中间件和库,如RTOS(实时操作系统)、USB库、文件系统等。这样可以方便地集成第三方软件组件,加快开发进度。

2、 使用STM32CubMX和HAL库函数进行开发的基本步骤和流程

用GPIO端口完成2只LED灯的周期闪烁。

2.1、系统流程图

基于HAL库的软件开发设计流程图如下,首先建立工程,然后配置参数,生成工程代码,修改完代码完成应用程序设计,最后下载到开发板测试。

 2.2、具体步骤

前期准备:

STM32CubMX使用Java编写,要先配置Java环境。然后下载安装STM32CubMX,软件下载地址如下:

https://www.st.com/en/development-tools/stm32cubemx.html

选择自己需要的版本,根据提示填写相关内容,邮箱一定要填写可用的。

下载安装注册登录,就可以使用。

新建工程之前要先安装固件库。点击Help->Manage em.....

根据需要选择芯片,点击右下方安装 (Install Now)

 (1)、新建STM32CubMX工程,选择设计采用的MCU。

点击File->New Pro...

在弹出的MCU设置页面选择相应的为控制器芯片,这里使用的是STM32F103C8T6。 

 (2)、STM32CubMX功能参数配置。

a、RCC配置

b、SYS选择 

c、MCU引脚选择(我们选择PA3、PA4,将这两个引脚设置为GPIO_Output) 

d、时钟配置 

(3)、生成工程代码。

新建一个文件夹,文件名和路径最好为英文。编译工程所使用的编译器选用“MDK-ARM V5”选项。

最后选择右上角GENERATE CODE,即可生成对应的工程代码。

(4)、编写应用程序。

在Application/User/Core的main.c中,将以下代码写入while循环中。

 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET); 
	  HAL_Delay(1000);
	  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET);
	  
	  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
	  HAL_Delay(1000); // ??1s
	  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
	  

编译运行 0 错误,0提醒

下载程序并烧录 

3、烧录结果

用GPIO端口实现两个流水灯闪烁。

实物连接图如下:

烧录之后的效果如下:

三、 采用中断模式通过按键控制LED灯闪烁

接上,再用GPIO端某一管脚接2个开关(用杜邦线模拟代替)。采用中断模式编程,当2分开关接高电平时,对应的两个LED灯停止工作(即停止周期性闪烁),接低电平时,恢复工作。

具体工程创建可参考以下博客:STM32中断和基于HAL库的LED流水灯_stm32按键中断控制灯闪烁-CSDN博客

 

将以下代码写入main.c中(这里的LED4是和配置时自己的User Lable对应的):

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) 
{ 
	if( GPIO_Pin == B1_EXTI_Pin )
		{
			HAL_GPIO_TogglePin(LED4_GPIO_Port, LED4_Pin); 
		}
}

 编译运行,0警告0错误

四、总结

本次我们主要学习基于HAL库实现流水灯闪烁,以及中断按键控制LED灯的状态。STM32CubMX是STM32提供的图形化的工程配置软件,自己手动建立基于HAL库的工程模版能够更加清楚HAL库的框架结构,但建立过程相对来说比较繁琐。文章多有不足,欢迎大家批评指正!

参考博客:STM32中断和基于HAL库的LED流水灯_stm32按键中断控制灯闪烁-CSDN博客

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值