原理图:

K0这个按键按下时,开发板D1这个灯亮,松开,灯灭
代码如下:
- #include "stm32f4xx.h"
-
-
- void LED_Init(void)
- {
- //1.定义一个GPIO外设的结构体变量
- GPIO_InitTypeDef GPIO_InitStructure;
-
- //RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF, ENABLE);
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
- //3.对结构体变量的成员进行赋值
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出模式
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //输出速率100MHZ
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉输出
-
- //4.初始化GPIO
- //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10; //引脚
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //引脚
- GPIO_Init(GPIOF, &GPIO_InitStructure);
-
- //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14; //引脚
- //GPIO_Init(GPIOE, &GPIO_InitStructure);
-
- GPIO_SetBits(GPIOF,GPIO_Pin_9); //设置高电平 LED灭
- // GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10); //设置高电平 LED灭
- //GPIO_SetBits(GPIOE,GPIO_Pin_13|GPIO_Pin_14); //设置高电平 LED灭
- }
-
-
- void KEY_Init(void)
- {
- //1.定义一个GPIO外设的结构体变量
- GPIO_InitTypeDef GPIO_InitStructure;
-
- //2.打开外设时钟 GPIOA PA0
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
-
- //3.对结构体变量的成员进行赋值
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //输入模式
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉输出
-
- //4.初始化GPIO
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //引脚
- GPIO_Init(GPIOB, &GPIO_InitStructure);
-
- }
-
-
- int main()
- {
- KEY_Init(); //按键的初始化
- LED_Init(); //LED的初始化
-
- while(1)
- {
- if( GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9) == RESET ) //说明被按下
- {
- GPIO_ResetBits(GPIOF,GPIO_Pin_9); //设置低电平 LED亮
- }
- else
- {
- GPIO_SetBits(GPIOF,GPIO_Pin_9); //设置高电平 LED灭
- }
- }
- }