点击查看代码
/**
******************************************************************************
* @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);
}
}
}