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

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

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

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

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

本文是一篇关于STM32 HAL库开发的入门教程,主要介绍了使用STM32 CubeIDE和Proteus进行GPIO开发的基本步骤。文章内容包括新建工程、配置时钟、配置GPIO、编写代码以及下载程序等环节,详细描述了按键控制LED的实现过程,并配有相应的图片说明。

一、新建工程

打开开发软件,左上角“文件”—“新建”—“STM32 Project”

选择芯片型号,我们这里使用的是STM32F103C6T6A,可以直接搜索

配置好工程名称,点击完成

二、配置时钟

找到“System Core”—“RCC”

配置HSE时钟

找到时钟树配置,将主频设置为72MHz,按下“Enter”键会自动配置好全部内容

三、配置GPIO

3.1 LED引脚配置

LED引脚为PC13,配置成输出模式,找到PC13引脚,选择“GPIO_Output”

在左侧配置好初始电平、输出速度,可以自定义一个引脚标签

3.2 按键引脚配置

按键需要配置成输入模式,我们硬件电路中按键一端接IO,另一端接GND,所以配置按键引脚为上拉输入模式,按键引脚选择PB7

四、其他配置

为了增加代码的可读性,我们配置自动生成代码时生成单独的.c和.h文件,配置步骤如下

另外需要Debug的话还需要配置一下这里

五、代码

5.1 生成代码

上面的内容全部配置完成后我们点击“项目”,选择“Generate Code”自动生成代码

5.2 配置生成.hex文件

点击“项目”—“属性”

5.3 LED状态翻转

我们先来测试一下LED状态翻转

while (1)
{
    HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
    HAL_Delay(500);
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */

编写完成后点击构建,这里博主使用Proteus仿真了一下,用实物的小伙伴可以直接烧录到板子里,后面介绍如何烧录,测试效果如下

5.4 按键控制LED

我们写一段按键检测程序,在检测到按键按下时翻转LED状态

/* USER CODE BEGIN WHILE */
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);
        }
    }
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */

测试效果如下

六、下载程序

打开“STM32 ST-LINK Utility”,先连接板子

之后点击下载,选择.hex文件,点击“start”烧录即可

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