使用步骤
1;开启相关IO时钟
2;初始化相关IO的模式 //模拟输入 浮空 上/下拉
3;配置函数的初始化调用和用GPIO_ReadInputDataBit();函数来获取IO状态
配置
#include "key.h" //引脚PA0 PC13
void key_init(void)
{ GPIO_InitTypeDef key1_GPIO_InitStruct;//按键1GPIO结构体名称
GPIO_InitTypeDef key2_GPIO_InitStruct; //按键1GPIO结构体名称
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启GPIOA的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开启GPIOC的时钟
key1_GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPD;//GPIO模式选择 下拉
key1_GPIO_InitStruct.GPIO_Pin|=GPIO_Pin_0;//GPIO引脚选择 用|不影响其他地方
GPIO_Init(GPIOA, &key1_GPIO_InitStruct);//gpio按键1初始化完成
key2_GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPD;//GPIO模式选择 下拉
key2_GPIO_InitStruct.GPIO_Pin|=GPIO_Pin_13;//GPIO引脚选择 用|不影响其他地方
GPIO_Init(GPIOC, &key2_GPIO_InitStruct);//gpio按键2初始化完成
}
头文件声明
#ifndef key_h
#define key_h
#include "define.h"//公共头文件
#define key1_start GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)
#define key2_start GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13)
void key_init(void);
#endif
函数使用
#include "define.h" // Device header
int main(void)
{ rgb_init();//LED初始化
key_init();//按键初始坏
LED_B_OFF;//LED初始灭
LED_R_OFF;//LED初始灭
LED_G_OFF;//LED初始灭
while(1)
{
if(key1_start)//获取KEY1电平
{
LED_B_OFF;
LED_R_ON;//点亮
LED_G_OFF;
}
if (key2_start&&(!key1_start))///获取KEY2电平
{
LED_B_OFF; LED_R_OFF; LED_G_OFF;//关闭LED
}
}
}