while(1)
{
int i;
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
i=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_13);
if(i==0x00)
{
Delay();//消抖一下 200MS-300MS
if(i==0x00)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
Delay(12000000);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
Delay(12000000);
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
Delay(12000000);
}
}
}
}
下面是我自己做的程序,你可以参考一下。
#include "stm32f10x.h"
u8 key_get;//读取按键值
void Led_Init(void);
void delay(u16 a);
u8 Key_scan(void);
int main(void)
{
SystemInit(); //初始化时钟
Led_Init();//初始化LED
while(1)
{
key_get = Key_scan();//读按键的值
if(key_get == 0) //有按键按下
{
delay(10); //消抖
if(key_get == 0) //有按键按下
{
GPIO_ResetBits(GPIOA, GPIO_Pin_8); //点亮LED
GPIO_ResetBits(GPIOD, GPIO_Pin_2);
delay(100); //亮一会
}
}
else
{
GPIO_SetBits(GPIOA, GPIO_Pin_8);
GPIO_SetBits(GPIOD, GPIO_Pin_2);
}
}
}
void Led_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD , ENABLE);//初始化GPIO外部设备
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //初始化PA.8
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//初始化为输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//输出速度
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化GPIO结构体
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOD,&GPIO_InitStructure);
GPIO_SetBits(GPIOA, GPIO_Pin_8);
GPIO_SetBits(GPIOD, GPIO_Pin_2);
}
u8 Key_scan(void)
{
u8 key_value;
GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);//初始化GPIO外部设备
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; //初始化PA.8
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//初始化为输入
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化GPIO结构体
key_value = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15);//读PA15的值
return key_value;
}
void delay(u16 a)
{
u16 x, y;
for(x=0;x<a;x++)
for(y=0;y<5000;y++);
}
|