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

相关推荐
wuyk55511 小时前
Keil工具链-第05讲-启动文件与__main到底做了什么
c语言·stm32·单片机·嵌入式硬件·物联网
shijuejianceliu17 小时前
传统规则视觉与嵌入式AI智能相机的技术差异
人工智能·嵌入式硬件·视觉检测·相机
不脱发的程序猿21 小时前
GD32串口数据收进内存之后DMA如何处理?
单片机·嵌入式硬件·dma·嵌入式·串口通信·gd32
FPGA小迷弟1 天前
FPGA 与千兆以太网校验和:从原理到 Verilog 实现
嵌入式硬件·fpga开发·无人机·ai编程·fpga
国科安芯2 天前
83 倍:ASC0108S 在推挽和开漏之间,差的不是速度,是回程
单片机·嵌入式硬件·架构·电平转换·抗辐射
国科安芯2 天前
从遥控到自治:ASP4644S2B支撑星载电源健康管理与容错配电
网络·单片机·嵌入式硬件·安全·dcdc·低轨卫星·商业航天
rhythm-ring2 天前
《汽车热管理系统:电子水泵单线PWM双向诊断机制》
单片机·嵌入式硬件·汽车
Dev_XH2 天前
【成品设计】基于物联网的车间安全生产监控系统设计
stm32·单片机·嵌入式硬件·物联网
xiebs_2 天前
【无标题】111
单片机
元器件BOM超人2 天前
GD32E230C8T6 兆易创新Cortex-M23超值型MCU解析:规格参数、替代选型与常见问题
单片机·嵌入式硬件