GPIO的使用--操作PE02 PE03 PE04实现开关控制灯泡亮灭

效果:

开关控制灯的亮灭

目录

1.找到引脚组别(DEFG)

led灯硬件结构

开关硬件结构

2.时钟使能

3.GPIO时钟控制

4.控制实现思路

[5. 完整代码](#5. 完整代码)

6.视频演示


1.找到引脚组别(DEFG)

开关的引脚组别--E;LED灯的引脚组别--F

led灯硬件结构
开关硬件结构

2.时钟使能

cpp 复制代码
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);          //LED
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);          //KEY

3.GPIO时钟控制

cpp 复制代码
//LED--GPIO参数配置
    GPIO_InitTypeDef led_gpio;                   //定义变量
    led_gpio.GPIO_Mode = GPIO_Mode_OUT;          //引脚以输出方式工作
    led_gpio.GPIO_OType = GPIO_OType_PP;         //推挽
    led_gpio.GPIO_Pin = GPIO_Pin_10;
    led_gpio.GPIO_Speed=GPIO_High_Speed;         //gpio的反应速率,不太影响
    led_gpio.GPIO_PuPd=GPIO_PuPd_UP;             //上拉  GPIO_PuPd_DOWN 下拉//GPIO_PuPd_NOPULL    
    GPIO_Init(GPIOF,&led_gpio);                  //初始化变量
cpp 复制代码
//KEY--GPIO参数配置
    GPIO_InitTypeDef key_gpio;                  //定义变量
    key_gpio.GPIO_Mode = GPIO_Mode_IN;          //引脚以输入方式工作
    key_gpio.GPIO_OType = GPIO_OType_PP;        //推挽
    key_gpio.GPIO_Pin =  GPIO_Pin_4;            //第几根引脚
    key_gpio.GPIO_Speed=GPIO_High_Speed;        //gpio的反应速率,不太影响
    key_gpio.GPIO_PuPd=GPIO_PuPd_UP;            //上拉  //取决于所调用的结构
    GPIO_Init(GPIOE,&key_gpio);                 //初始化

4.控制实现思路

cpp 复制代码
while(1)                   //大循环体,保证一直在运行,被控制
    {
        key0= GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4);   //默认高电平,按下,接地
        if(key0==1)
        {
            GPIO_WriteBit(GPIOF, GPIO_Pin_10,1);         //led高电平,灯灭
        }
        else
        {
            GPIO_WriteBit(GPIOF, GPIO_Pin_10,0);         //led高电平,灯亮
        }    
    }

5. 完整代码

cpp 复制代码
#include "stm32f4xx.h"                  // Device header

int main()
{
	//时钟使能--LED
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
	
	//GPIO时钟控制  //参数配置
	//让程序决定第几组第几根引脚,如何工作
	GPIO_InitTypeDef led_gpio;
	led_gpio.GPIO_Mode = GPIO_Mode_OUT;    //引脚以输出方式工作
	led_gpio.GPIO_OType = GPIO_OType_PP;	 //推挽
	led_gpio.GPIO_Pin =  GPIO_Pin_9| GPIO_Pin_10 |GPIO_Pin_8;
	led_gpio.GPIO_Speed=GPIO_High_Speed;      //gpio的反应速率,不太影响
	led_gpio.GPIO_PuPd=GPIO_PuPd_DOWN;          //上拉  GPIO_PuPd_DOWN 下拉//GPIO_PuPd_NOPULL
	
	GPIO_Init(GPIOF,&led_gpio);
	GPIO_SetBits(GPIOF, GPIO_Pin_9);
	GPIO_SetBits(GPIOF, GPIO_Pin_10);
	
	uint16_t key0=0;
	//时钟使能--KEY开关
		RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
	//GPIO时钟控制  //参数配置
	//让程序决定第几组第几根引脚,如何工作
	GPIO_InitTypeDef key_gpio;
	key_gpio.GPIO_Mode = GPIO_Mode_IN;        //引脚以输入方式工作
	key_gpio.GPIO_OType = GPIO_OType_PP;	    //推挽
	key_gpio.GPIO_Pin =  GPIO_Pin_4| GPIO_Pin_3 |GPIO_Pin_2;//第几根引脚
	key_gpio.GPIO_Speed=GPIO_High_Speed;      //gpio的反应速率,不太影响
	key_gpio.GPIO_PuPd=GPIO_PuPd_UP;          //上拉  GPIO_PuPd_DOWN 下拉//GPIO_PuPd_NOPULL
	
	GPIO_Init(GPIOE,&key_gpio);               //初始化
	while(1)
	{
		//uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
		key0= GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4);//默认高电平,按下,接地
		if(key0==1)
		{
      GPIO_WriteBit(GPIOF, GPIO_Pin_10,1);//led高电平,灯灭
		}
		else
		{
			GPIO_WriteBit(GPIOF, GPIO_Pin_10,0);	//led高电平,灯亮
		}	
		
	}
}

6.视频演示

开关控制灯的亮灭

PE02、PE03原理与PE04相同

相关推荐
Lugas Luo13 分钟前
Kernel 5.10 ATA 驱动分析与车载环境诊断
linux·嵌入式硬件
ZHANG13HAO17 分钟前
基于九轴传感器 + K-means 聚类的振动异常检测实战教程
单片机
飞控架构之美18 分钟前
多旋翼无人机系统组成(九)(多旋翼无人机的设计)
stm32·嵌入式硬件·硬件架构·无人机
飞控架构之美21 分钟前
多旋翼无人机系统组成(八)(任务载荷系统详解)
stm32·嵌入式硬件·硬件架构·无人机
BUG_yechiyu35 分钟前
STM32CubeMX使用9 配置Time4 PWM(DMA)输出
stm32·单片机·嵌入式硬件
学嵌入式的小杨同学36 分钟前
STM32 进阶封神之路(三十五):TFT LCD 工程化实战 ——FSMC 高速驱动、多图层界面、中英文显示与图形引擎(完整可落地)
stm32·单片机·嵌入式硬件·mcu·硬件架构·硬件工程·智能硬件
chao18984439 分钟前
基于STM32F1的声源定位系统设计与实现
stm32·嵌入式硬件·unity
网易独家音乐人Mike Zhou40 分钟前
【Python】TXT、BIN文件的十六进制相互转换小程序
python·单片机·mcu·小程序·嵌入式·ti毫米波雷达
我叫洋洋1 小时前
[STM32 和 PWM 输出 结合 proteus 仿真]
stm32·嵌入式硬件·proteus