标题:
CKSF013C8T6按键长按与短按代码
[打印本页]
作者:
liqingb
时间:
2021-3-25 12:58
标题:
CKSF013C8T6按键长按与短按代码
#include "key.h"
//************************** IO初始化
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入或者为下拉输入具体看io的硬件电路
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1); //PB.5 输出高
}
//************************** 按键短按
u8 KEY_SCAN(u8 mode) //***********mode=1按键有效,mode=0按键无效
{
u8 key_num;
if(mode==1)
{
if(KEY_1==0)
{
delay_ms(100);//********************按键消抖可以减小
if(KEY_1==0)
{
key_num++;
if(key_num==3)
{
key_num=1;
}
}
}
}
else key_num=0;
return key_num;
}
//************************** 按键长按
u8 KEY_SCAN_LONG(u8 mode) //***********mode=1按键有效,mode=0按键无效
{
u16 key_num,led_on;
while((KEY_2==0)&&(mode==1))
{
delay_ms(100);
key_num++;
}
if(key_num>30)
{ key_num=0;
if(led_on==1) led_on=0;
else led_on=1;
}
return led_on;
}
复制代码
#include "delay.h"
#include "sys.h"
#include "led.h"
#include "key.h"
int main(void)
{
u8 t;
delay_init();
LED_Init();
KEY_Init();
while(1)
{
t=KEY_SCAN_LONG(1);
if(t==1)
{
LED0=1;
}
else
{
LED0=0;
}
}
}
复制代码
以上代码下载:
FUN.zip
(4.14 KB, 下载次数: 21)
2021-3-25 12:58 上传
点击文件名下载附件
按键
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1