初级会员

- 积分
- 109
- 金钱
- 109
- 注册时间
- 2015-5-4
- 在线时间
- 12 小时
|
3金钱
#ifndef __KEY_
#define __KEY_
#include "sys.h"
#define Key2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)//读取按键2
void KEY_Init(void);
u8 Key_Scan(u8 mode);
#endif
******************************按键头文件*******************************
#include "key.h"
#include "delay.h"
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_Initstruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
GPIO_Initstruct.GPIO_Pin = GPIO_Pin_2;
GPIO_Initstruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Initstruct.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOE,&GPIO_Initstruct);
}
u8 Key_Scan(u8 mode) //返回1按键按下,返回0按键未按下;
{
static u8 key_up = 1;
if(mode==1)key_up = 1;
if(key_up&&Key2==0)
{
delay_ms(10);
if(Key2==0)
{
key_up = 0;
return 1;
}
}
else if(Key2==1)
{
key_up = 1;
return 0;
}
*************************按键C文件**************************************
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "beep.h"
#include "key.h"
int main(void)
{
u8 KEY = 0;
delay_init();
led_init();
KEY_Init();
while(1){
KEY =Key_Scan(0);
if(KEY){
PEout(5)=0;
delay_ms(300);
PEout(5)=1;
delay_ms(300);
KEY = 0;
}
}
*********************主程序*******************************
按键的硬件连接图如图所示,按键2接PE2,调试的时候发现无论按键按下与否,Key2的值不等于1也不等于0,为什么????
|
-
使用的按键2 接PE2
|