问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32 HAL库开发入门:GPIO控制LED与按键

创作时间:
作者:
@小白创作中心

STM32 HAL库开发入门:GPIO控制LED与按键

引用
CSDN
1.
https://blog.csdn.net/qq_45217381/article/details/145584685

本文将介绍如何使用STM32 HAL库进行GPIO开发。通过本教程,你将学习到如何使用STM32 CubeIDE配置工程、设置时钟和GPIO,以及编写控制LED和按键的程序。本教程适合有一定嵌入式开发基础的读者。

开发环境

  • STM32 CubeIDE
  • Proteus 8 Professional(可选)

目标

实现按键控制LED的功能。

一、新建工程

打开STM32 CubeIDE,选择“文件”->“新建”->“STM32 Project”,选择芯片型号STM32F103C6T6A,配置好工程名称后点击完成。

二、配置时钟

在“System Core”中找到“RCC”,配置HSE时钟。将主频设置为72MHz,按下“Enter”键会自动配置好全部内容。

三、配置GPIO

3.1 LED引脚配置

LED引脚为PC13,配置成输出模式。在左侧配置好初始电平、输出速度,可以自定义一个引脚标签。

3.2 按键引脚配置

按键需要配置成输入模式,配置按键引脚为上拉输入模式,按键引脚选择PB7。

四、其他配置

为了增加代码的可读性,配置自动生成代码时生成单独的.c和.h文件。如果需要Debug,还需要进行相应的配置。

五、代码

5.1 生成代码

完成上述配置后,点击“项目”->“Generate Code”自动生成代码。

5.2 配置生成.hex文件

点击“项目”->“属性”,配置生成.hex文件。

5.3 LED状态翻转

编写LED状态翻转的代码:

while (1)
{
    HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
    HAL_Delay(500);
}
5.4 按键控制LED

编写按键检测程序,在检测到按键按下时翻转LED状态:

while (1)
{
    // 按键按下
    if (HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0)
    {
        // 延时消抖
        HAL_Delay(10);
        if (HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0)
        {
            // 松手检测
            while (!HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin));
            // 翻转LED状态
            HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
        }
    }
}

六、下载程序

使用“STM32 ST-LINK Utility”工具下载程序到开发板。先连接板子,然后选择.hex文件并点击“start”进行烧录。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号