新手上路
- 积分
- 22
- 金钱
- 22
- 注册时间
- 2022-7-20
- 在线时间
- 3 小时
|
int main(void)
{
vu8 key=0;
delay_init(); //ÑÓʱº¯Êý³õʼ»¯
LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
BEEP_Init(); //³õʼ»¯·äÃùÆ÷¶Ë¿Ú
KEY_Init(); //³õʼ»¯Óë°´¼üÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
LED0=0; //ÏȵãÁÁºìµÆ
while(1)
{
key=KEY_Scan(0); //µÃµ½¼üÖµ
if(key)
{
switch(key)
{
case WKUP_PRES: //¿ØÖÆ·äÃùÆ÷
BEEP=!BEEP;
break;
case KEY1_PRES: //¿ØÖÆLED1·­×ª
LED1=!LED1;
break;
case KEY0_PRES: //ͬʱ¿ØÖÆLED0,LED1·­×ª
LED0=!LED0;
LED1=!LED1;
break;
}
}else delay_ms(10);
}
}
#include "stm32f10x.h"
#include "key.h"
#include "sys.h"
#include "delay.h"
//////////////////////////////////////////////////////////////////////////////////
//±¾³ÌÐòÖ»¹©Ñ§Ï°Ê¹Óã¬Î´¾­×÷ÕßÐí¿É£¬²»µÃÓÃÓÚÆäËüÈκÎÓÃ;
//ALIENTEK¾«Ó¢STM32¿ª·¢°å
//°´¼üÇý¶¯´úÂë
//ÕýµãÔ­×Ó@ALIENTEK
//¼¼ÊõÂÛ̳:www.openedv.com
//ÐÞ¸ÄÈÕÆÚ:2012/9/3
//°æ±¾£ºV1.0
//°æȨËùÓУ¬µÁ°æ±Ø¾¿¡£
//Copyright(C) ¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾ 2009-2019
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
//°´¼ü³õʼ»¯º¯Êý
void KEY_Init(void) //IO³õʼ»¯
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//ʹÄÜ ORTA,PORTEʱÖÓ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_3;//KEY0-KEY1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÉèÖóÉÉÏÀ­ÊäÈë
GPIO_Init(GPIOE, &GPIO_InitStructure);//³õʼ»¯GPIOE4,3
//³õʼ»¯ WK_UP-->GPIOA.0 ÏÂÀ­ÊäÈë
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0ÉèÖóÉÊäÈ룬ĬÈÏÏÂÀ­
GPIO_Init(GPIOA, &GPIO_InitStructure);//³õʼ»¯GPIOA.0
}
//°´¼ü´¦Àíº¯Êý
//·µ»Ø°´¼üÖµ
//mode:0,²»Ö§³ÖÁ¬Ðø°´;1,Ö§³ÖÁ¬Ðø°´;
//0£¬Ã»ÓÐÈκΰ´¼ü°´ÏÂ
//1£¬KEY0°´ÏÂ
//2£¬KEY1°´ÏÂ
//3£¬KEY3°´Ï WK_UP
//×¢Òâ´Ëº¯ÊýÓÐÏìÓ¦ÓÅÏȼ¶,KEY0>KEY1>KEY_UP!!
u8 KEY_Scan(u8 mode)
{
static u8 key_up=1;//°´¼ü°´ËÉ¿ª±êÖ¾
if(mode)key_up=1; //Ö§³ÖÁ¬°´
if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
{
delay_ms(10);//È¥¶¶¶¯
key_up=0;
if(KEY0==0)return KEY0_PRES;
else if(KEY1==0)return KEY1_PRES;
else if(WK_UP==1)return WKUP_PRES;
}else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1;
return 0;// ÎÞ°´¼ü°´ÏÂ
}
|
|