本文通过标准外设库进行STM32的GPIO_LED/KEY的实验;
1.通过官方的芯片包进行开发实验的工程模版的搭建;STM32F407_Template;
2.通过官方固件库中的stm32f4xx_dsp_stdperiph_lib_um.chm所给的实验模版进行自己的实验函数编写;
一、GPIO简介
二、GPIO输出————LED
2.1 硬件原理
通过查看开发板原理图,来寻找实验所需用到的LED原理图和所需的对应控制的引脚;
2.2 代码程序的编写
更改后再\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; // 推免输出