- #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)
|