STM32 GPIO配置 点亮LED灯

本次是基于STM32F407ZET6做一个GPIO配置,实现点灯实验。

新建文件

LED.c、LED.h文件,将其封装到Driver文件中。

双击Driver文件将LED.c添加进来

编写头文件,这里注意需要将Driver头文件声明一下。

在LED.c、main.c里面引入头文件LED.h

LED初始化

LED初始化就是对GPIO初始化。以后用到GPIO引脚都需要对其配置(按键KEY 蜂鸣器Buzzer)

LED_Init LED初始化 这里我们跟着库函数直接复制了。

找到STM32F407的库函数手册

将下面框住的部分复制到 LED.c中

定义结构体变量

复制代码
GPIO_InitTypeDef  GPIO_InitStructure;

配置时钟,对其GPIO引脚使用必须开启其对应的引脚时钟,这里开启的GPIO G族的时钟,因为led灯的引脚是GPIOG族的(根据电路原理图)

复制代码
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);

选择需要配置的引脚

这里需要看电路原理图,来知道小灯对应芯片的那个引脚

复制代码
GPIO_InitStructure.GPIO_Pin =;

Ctrl + F搜索LED1找到其位置,根据原理图得知,对应PG13引脚,也就是GPIO G族的13号引脚

这样我们就可以编写代码了,我们配置13号引脚使其点亮LED1灯。

复制代码
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

选择工作模式

这里选择输出模式

复制代码
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

对其F12 goto过去可以看到其工作模式的种类

GPIO_Mode_IN 输入模式

GPIO_Mode_OUT 输出模式

GPIO_Mode_AF 复用输入

GPIO_Mode_AN 模拟输入

选择输出模式

这里选择推挽输出

复制代码
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

跳转过去可以看到都有什么类型的输出模式

PP 推挽输出模式

OD 开漏输出模式

还有复用推挽和复用开漏模式。

选择输入模式

这里选择浮空输入。

复制代码
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

跳转过去可以看到都有什么输入模式

NOPULL 浮空

UP 上拉

DOWN 下拉

配置速度

配置高低电平切换的速度,这里为100MHz。

复制代码
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;

跳转过去可以看到都有多少Hz的速度

底下是宏定义

2MHz Low_Speed 低速

25MHz Medium_Speed 中速

50MHz Fast_Speed 快速

100MHz High_Speed 高速

GPIO初始化

带Init后缀的全是初始化函数,这里是初始化GPIO G族的引脚。

复制代码
GPIO_Init(GPIOG, &GPIO_InitStructure);

点灯操作

根据电路图得知,引脚输出低电平时,LED灯才会亮起 因为左边接VDD3.3V属于高电势,LED0需要输出低电平才会产生电势差使电流流动。

我们这样配置完GPIO是默认输出低电平的,所以现在上电编译下载就会让LED1灯亮,但为了后续的模块操作,我们在初始化的时候将所有的灯关闭也就是全置为高电平。

GPIO_SetBits函数可以将引脚置高电平。

先将LED_Init在头文件里声明一下

然后我们在main.c里做电灯操作。

GPIO_ResetBits 函数可以将引脚置低电平

将LED_Init写到主函数里。

编译下载实现点亮LED1灯效果。

资源包:

百度网盘:KEIL

链接: https://pan.baidu.com/s/1DZZ_kP7jXLYeisntS9PZzA?pwd=6ujf 提取码: 6ujf

相关推荐
2401_853448232 小时前
ESP8266蓝牙模块
stm32·蓝牙模块·esp8266
许商2 小时前
【stm32】【printf】
java·前端·stm32
LaoZhangGong1233 小时前
以太网HTTP数据包格式分析
c语言·stm32·网络协议·http·tcp·arp
云山工作室4 小时前
用于电动汽车的永磁同步电机调速系统建模与仿真(论文+)
stm32·单片机·嵌入式硬件·毕业设计·毕设
yuan199974 小时前
AD7689 12位串行ADC驱动与应用
单片机·嵌入式硬件
磨十三4 小时前
MCU 时钟系统全解析:主时钟、PLL、分频与外设时钟门控
arm开发·单片机·嵌入式硬件
逐步前行5 小时前
Proteus 8.9(四)51单片机仿真
嵌入式硬件·51单片机·proteus
DIY机器人工房5 小时前
嵌入式面试题:纹波率怎么计算;Buck 电路电感值的标准计算式是什么?
stm32·嵌入式硬件·面试题·diy机器人工房
DIY机器人工房6 小时前
嵌入式面试题:电容滤波,低频高频谁来滤?放置顺序怎么定?
stm32·单片机·嵌入式硬件·diy机器人工房
学习路上_write6 小时前
嵌入式系统bringup指南:软硬件调试
c语言·单片机·嵌入式硬件