//°´¼ü³õʼ»¯º¯Êý void KEY_Init(void) //IO³õʼ»¯ { GPIO_InitTypeDef GPIO_InitStructure; //³õʼ»¯KEY0-->GPIOA.13,KEY1-->GPIOA.15 ÉÏÀÊäÈë IPU RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//ʹÄÜPORTA,PORTEʱÖÓ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//PE2~4 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÉèÖóÉÉÏÀÊäÈë GPIO_Init(GPIOE, &GPIO_InitStructure);//³õʼ»¯GPIOE2,3,4 //³õʼ»¯ WK_UP-->GPIOA.0 ÏÂÀÊäÈë IPD GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0ÉèÖóÉÊäÈ룬ĬÈÏÏÂÀ GPIO_Init(GPIOA, &GPIO_InitStructure); //³õʼ»¯GPIOA.0 } u8 KEY_Scan(u8 mode) { ;//°´¼ü°´ËÉ¿ª±êÖ¾ ; //Ö§³ÖÁ¬°´ ||KEY1==||KEY2==||KEY3==)) //°´ÏÂÈ¥µÄ״̬key { delay_ms();//È¥¶¶¶¯ key_up = ; )return KEY_RIGHT; )return KEY_DOWN; )return KEY_LEFT; )return KEY_UP; } &&KEY1==&&KEY2==&&KEY3==)key_up=; ; // ÎÞ°´¼ü°´Ï }
) { t=KEY_Scan(); if(t) { switch(t) { case KEY_UP: //µÆÈ«Ã𣬷äÃùÆ÷Ïì2Éù PA.0¿ØÖÆPB.8 LED0=; LED1=; BEEP = ; delay_ms(); BEEP = ; delay_ms(); BEEP = ; delay_ms(); BEEP = ; delay_ms(); break; case KEY_LEFT: //LED0ÉÁÒ»´Î PE.3¿ØÖÆPE.5 LED0=; delay_ms(); LED0=; break; case KEY_DOWN: //¿ØÖÆLED1·×ª PE.2¿ØÖÆPB.5 LED1=!LED1; break; case KEY_RIGHT: //ͬʱ¿ØÖÆLED0,LED1·×ª PE.4 LED0=; delay_ms(); LED0=; break; } }); } }