利用库函数实现按键控制一盏LED灯

点击查看代码
/**
   ******************************************************************************
   * @file    main.c 
   * @author  
   * @version 
   * @date    2024/06/28
   * @brief   实现利用MCU的KEY0(PA0)引脚控制开发板的LED0(PF9)灯的亮灭
   ******************************************************************************
**/


#include "stm32f4xx.h"  //必须包含

//LED的初始化
void LED_Config(void)
{
	//1.定义GPIO外设的结构体变量
	GPIO_InitTypeDef  GPIO_InitStructure;
	
	//2.打开GPIOF端口的时钟
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
	
	//3.配置PF9引脚为输出模式
	GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_9;
	GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;
	
	//4.对GPIOF端口进行初始化
	GPIO_Init(GPIOF, &GPIO_InitStructure);
	
	//5.控制PF9引脚输出高电平,则LED默认不会亮
  GPIO_SetBits(GPIOF,GPIO_Pin_9);
}

//KEY的初始化
void KEY_Config(void)
{
	//1.定义GPIO外设的结构体变量
	GPIO_InitTypeDef  GPIO_InitStructure;
	
	//2.打开GPIOA端口的时钟
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
	
	//3.配置PA0引脚为输出模式
	GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0;				//引脚编号
	GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;			//输入模式
	GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL; //无上下拉
	
	//4.对GPIOA端口进行初始化
	GPIO_Init(GPIOA, &GPIO_InitStructure);
}



int main()
{
	//1.对硬件进行初始化
	LED_Config();
	KEY_Config();
	
	//2.循环判断用户是否按下按键
	while(1)
	{
		if( GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) )
		{
			//说明用户没有按下按键
			GPIO_SetBits(GPIOF,GPIO_Pin_9);
		}
		else
		{
			//说明用户已经按下按键
			GPIO_ResetBits(GPIOF,GPIO_Pin_9);
		}	
	}
}

posted @ 2025-08-30 12:18  w1888  阅读(11)  评论(0)    收藏  举报