实验STM32F407------GPIO_LED/KEY

本文介绍了STM32F407使用标准外设库进行GPIO控制LED和按键的实验。详细讲解了GPIO的硬件原理、输出模式设置,包括LED的初始化和代码编写,以及按键的初始化、消除抖动和检测功能。同时涵盖了GPIO的输入输出模式及速度选择。
摘要由CSDN通过智能技术生成

本文通过标准外设库进行STM32的GPIO_LED/KEY的实验;

1.通过官方的芯片包进行开发实验的工程模版的搭建;STM32F407_Template;

2.通过官方固件库中的stm32f4xx_dsp_stdperiph_lib_um.chm所给的实验模版进行自己的实验函数编写;

一、GPIO简介

        利用固件库建立好的工程模板,就可以方便地使用STM32 标准库编写应用程序, 本文学习控制 IO 口电平高低实现 LED 灯闪烁的效果。
        GPIO是英文 General Purpose Input/Output 的缩写,中文翻译为通用输入 /输出。它是一种在数字电 子系统中常见的接口类型,用于与外部设备进行通信和控制。
        GPIO接口可以配置成输出模式来控制外部设备,也可以配置成输入模式来读取外部信号,是
STM32 的一种外设,连接芯片外部的引脚,其引脚可以供使用者自由的进行控制。将 STM32芯片的 GPIO 引脚与外部设备连接起来,也可以实现与外部通讯、控制以及数据采集的功能。 GPIO 最简单的
        功能是输出高低电平;GPIO 还可以被设置为输入功能,用于读取按键等输入信号;也可以将 GPIO复 用成芯片上的其他外设的控制引脚。
        通过使用GPIO接口,可以方便地与各种外部设备进行交互,如传感器、执行器、显示器、键盘 等。在嵌入式系统、单 8 片机和物联网应用中, GPIO 是一种非常常见和重要的接口类型。

二、GPIO输出————LED

2.1 硬件原理

通过查看开发板原理图,来寻找实验所需用到的LED原理图和所需的对应控制的引脚;

通过原理图我们可知:
LED0 LED1 的阴极都是连接到 STM32 GPIO 引脚,只要我们控制 GPIO 引脚的电平输出状
态,即可控制 LED 灯的亮灭。
LED0 ——PF9 引脚
LED1——PF10 引脚

2.2 代码程序的编写

        
首先将模版的文件名和\STM32F407_Template\USER中下图两文件的命名更改成我们所需的,

更改后再\1_GPIO_LED\HARDWARE文件中新建一个led文件,再在此文件中新建两个led.c和led.h文件,方便程序模块化;

然后点击上图带绿色图标的文件进入keil进行编写程序,点击魔法棒更改过程文件名。

 将led.c和led.h文件添加到工程里

 

 

 2.3 led.c 文件编写

通过查询固件包提供的案例进行模仿编写LED初始化

 首先找到文档中找到出现的第一行执行代码;

 将其写到自己的函数体内

void KEY_Init(void)
{
    // 声明了一个名为 GPIO_InitStructure 的变量,其类型为 GPIO_InitTypeDef。
	// GPIO_InitTypeDef 是一个结构体类型,用于配置GPIO(通用输入输出)引脚的详细参数。
	GPIO_InitTypeDef  GPIO_InitStructure;
	
}

结构体 GPIO_InitTypeDef 通常包含以下几个成员变量,用于详细指定GPIO端口的配置:

  • GPIO_Pin:指定要配置的GPIO引脚。这通常是通过位运算组合多个引脚编号来实现的。
  • GPIO_Mode:指定引脚的工作模式,如输入、输出、复用功能或模拟模式等。
  • GPIO_Speed:当引脚配置为输出模式时,该参数指定引脚的输出速率。
  • GPIO_OType:输出类型,通常是推挽输出或开漏输出。
  • GPIO_PuPd:指定内部上拉或下拉电阻的使用情况,适用于输入模式。

下一条

// 控制F端口通电还是断电
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);

在STM32微控制器的开发中,`RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);` 这行代码的作用是启用GPIOF端口的时钟。STM32系列微控制器采用不同的时钟域来管理其资源,其中RCC(Reset and Clock Control)模块负责系统的时钟管理。对于GPIO(通用输入输出)端口而言,要使用任何GPIO端口之前,首先需要使能(开启)该端口的时钟,以保证其工作正常。

解析这行代码的各个部分:

- `RCC_AHB1PeriphClockCmd`:这是一个函数,用于控制AHB1总线上外设的时钟。在STM32的库函数中,RCC模块提供了多个这样的函数来控制不同总线上外设的时钟,如AHB1、AHB2、APB1等。
- `RCC_AHB1Periph_GPIOF`:这是一个宏定义,指定了要控制时钟的外设,这里是GPIOF。STM32系列微控制器根据不同的型号,GPIO端口可能从GPIOA到GPIOI不等。每个GPIO端口都对应有一个宏定义,用于指明在RCC模块中的时钟控制函数中具体操作的对象。
- `ENABLE`:这是一个宏定义,用于指示`RCC_AHB1PeriphClockCmd`函数将时钟使能。对应地,还有一个`DISABLE`宏定义,用于关闭外设的时钟。

总的来说,这行代码的功能是启用连接到AHB1总线的GPIOF端口的时钟。启用时钟是使用任何外设前的必要步骤,因为没有时钟信号,外设不会工作。这是STM32硬件抽象层(HAL)库或标准外设库编程的基本模式之一。

下一条

	// 配置F端口下的9号和10号引脚
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;	// 输出模式
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;	// 推免输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

提弦木偶OB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值