中级会员
 
- 积分
- 375
- 金钱
- 375
- 注册时间
- 2014-12-11
- 在线时间
- 64 小时
|
发表于 2016-1-5 09:51:21
|
显示全部楼层
[mw_shl_code=c,true]#include "key.h"
u8 key_current=0,key_old=0,key_down=0,key_press=0,key_up=0,key_change=0;
void KEY_Init(void)
{
RCC->APB2ENR|=RCC_APB2ENR_IOPEEN|RCC_APB2ENR_IOPAEN;
GPIOE->CRL&=~0XFFF00;
GPIOE->CRL|=0x888<<8;
GPIOE->ODR|=7<<2;
GPIOA->CRL&=~0XF;
GPIOA->CRL|=8;
GPIOA->ODR&=~1;
}
void KEY_Scan(void)
{
key_current=0;
key_change=0;
if(!KEY0)
key_current|=1;
if(!KEY1)
key_current|=2;
if(!KEY2)
key_current|=4;
if(WK_UP)
key_current|=8;
if(key_current==key_old)
{
key_press=key_current;
key_down=0;
key_up=0;
}
else
{
key_change=1;
key_down=(~key_old)&(key_current^key_old);
key_press=key_current&key_old;
key_up=key_old&(key_current^key_old);
key_old=key_current;
}
}
[/mw_shl_code]
[mw_shl_code=c,true]#ifndef __KEY_H
#define __KEY_H
#include "sys.h"
#define KEY0 PEin(4)
#define KEY1 PEin(3)
#define KEY2 PEin(2)
#define WK_UP PAin(0)
#define KEY0_FILTER 1
#define KEY1_FILTER 2
#define KEY2_FILTER 4
#define WKUP_FILTER 8
extern u8 key_down,key_press,key_up,key_change;
void KEY_Init(void);
void KEY_Scan(void);
#endif
[/mw_shl_code]
|
|