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相同

相关推荐
崇山峻岭之间22 分钟前
HC32F460PETB的PH2的TIM4_2_CLK
单片机
Brilliantwxx22 分钟前
【STM32】 I2C协议和设备主从( 图解 + 面试题 )
stm32·单片机·嵌入式硬件·架构
威嵌神州26 分钟前
星载计算机产品方案:商业卫星国产化平台
嵌入式硬件
老当益壮梁奶奶34 分钟前
51单片机中断系统详解
c语言·单片机·嵌入式硬件·学习·51单片机
Brilliantwxx36 分钟前
【STM32】 I2C 外设内部硬件结构和状态位
开发语言·stm32·单片机·嵌入式硬件
天空'之城9 小时前
单片机基础核心知识点汇总(三十五)
单片机·嵌入式硬件
secondyoung9 小时前
I2C通信协议详解
arm开发·驱动开发·stm32·单片机·嵌入式硬件·mcu·51单片机
anew___10 小时前
蜂鸣器播放音乐——让 Arduino 唱出旋律
c++·stm32·单片机·嵌入式硬件·c
jianqiang.xue11 小时前
ESP-IDF保姆级入门40|量产烧录与产线测试全解:批量烧录方案/校准流程/功能测试/不良分拣/产线追溯,掌握工业级量产交付全流程
单片机·物联网·esp32
幼儿园蛋小黑14 小时前
单片机数码管LED灯独立按键中断定时器综合实战
单片机·嵌入式硬件