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