HAL库使用教程——1_点亮LED灯并闪烁



前言

HAL库是STM32系列单片机广泛应用的库函数,一般使用STM32CUBEMX软件进行初始化配置,从而代替繁琐的单片机初始化代码编写,并且HAL库的函数功能也非常强大。


一、STM32CUBEMX工程配置

1.新建工程

File->New Project
1.新建工程

2.选择单片机型号

(这里我所用的单片机型号是STM32F103C8T6)
在这里插入图片描述

3.初始化配置

- - 配置烧录程序端口

在这里插入图片描述

- - 系统时钟配置

在这里插入图片描述

- - GPIO口配置

在右边芯片示意图中将PA1配置为输出模式
在这里插入图片描述

然后在左边详细配置GPIO,每个选项代表什么意思需要自己去了解,最后一项User Lable就是给I/O起个新名字,有利于编程。
在这里插入图片描述

- - 时钟树配置

频率越大运行速度越快
在这里插入图片描述

4.输出工程选项

工程名字不要有空格和中文,一般用字母与下划线
保存路径不要有空格和中文
在这里插入图片描述

把CODE也配置好,然后其他的都不用管,选择生成代码
在这里插入图片描述

打开工程
在这里插入图片描述

二、KEIL5代码编写

1.LED闪烁

如果不按照注释要求的位置写代码,那么如果中途修改STM32CUBEMX的配置,在错误位置的代码就会被删除。
在这里插入图片描述

while(1){ } 中代码如下:

HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);//翻转电平
HAL_Delay(1000);//延时1s

接线图如下
在这里插入图片描述

编译后下载
在这里插入图片描述

效果如下

QQ视频20240528212419

总结

好好学习,天天向上。

STM32HAL库配合STM32CubeMX工具是一个非常流行的STM32系列单片机开发方式。使用这种方式配置点亮LED的步骤通常包括以下几个部分: 1. **创建项目**:使用STM32CubeMX创建一个新项目,选择对应的STM32芯片型号。 2. **配置时钟树**:为系统配置合适的时钟源和时钟树,确保系统的主时钟和外设时钟满足需求。 3. **配置GPIO**:根据硬件电路设计,选择相应的GPIO(通用输入输出)引脚,并将其配置为输出模式(推挽输出),这是控制LED亮灭的主要设置。 4. **配置中断(如果需要)**:如果需要基于特定事件来控制LED(如定时器中断),还需要在CubeMX中配置相应的中断源和中断优先级。 5. **生成代码**:完成上述配置后,在CubeMX中生成初始化代码。这将生成一个包含所有配置设置的项目框架。 6. **编写业务逻辑代码**:在生成的代码基础上,编写控制LED的业务逻辑代码。通常需要在主循环中设置GPIO输出电平或编写中断服务函数来控制LED的状态。 下面是一个简单的示例代码片段,假设LED连接在PA5引脚上,使用STM32 HAL库点亮LED: ```c /* 主函数 */ int main(void) { /* HAL库初始化 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化LED对应的GPIO */ __HAL_RCC_GPIOA_CLK_ENABLE(); // 使能GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出 GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* 主循环 */ while (1) { /* 点亮LED */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); /* 延时一段时间 */ HAL_Delay(500); // 延时500ms /* 熄灭LED */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); /* 延时一段时间 */ HAL_Delay(500); // 延时500ms } } /* 系统时钟配置函数,根据具体的硬件和需求进行配置 */ void SystemClock_Config(void) { // 此处应根据具体硬件配置系统时钟 } ``` 在上述代码中,`HAL_GPIO_WritePin()`函数用于控制指定引脚的电平状态,`GPIO_PIN_SET`表示输出高电平(点亮LED),`GPIO_PIN_RESET`表示输出低电平(熄灭LED)。`HAL_Delay()`函数用于实现延时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值