初级会员

- 积分
- 76
- 金钱
- 76
- 注册时间
- 2015-9-21
- 在线时间
- 1 小时
|
5金钱
////////////////////////主函数
#include "led.h"
#include "delay.h"
#include "BEEP.H"
#include "sys.h"
#include "stm32f10x.h"
#include "KEY.H"
int main(void)
{
u8 key;
delay_init();
KEY_Init();
LED_Init();
BEEP_Init();
GPIO_SetBits(GPIOB,GPIO_Pin_5);
while(1)
{
key =KEY_Scan(0);
if(key)
{ switch(key)
{ case WKUP_PRES:
BEEP=!BEEP;break;
case KEY2_PRES:
LED0=!LED0;break;
case KEY1_PRES:
LED1=!LED1;break;
case KEY0_PRES:
LED0=!LED0;
LED1=!LED1;break;
}
}else delay_ms(10);
}
}
//////////////////////////key.h
#ifndef __KEY_H
#define __KEY_H
#include"sys.h"
#define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)
#define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)
#define KEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)
#define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)
#define KEY0_PRES 1
#define KEY1_PRES 2
#define KEY2_PRES 3
#define WKUP_PRES 4
void KEY_Init(void);
u8 KEY_Scan(u8);
#endif
/////////////////////////////////key.c
#include "KEY.H"
#include "sys.h"
#include "delay.h"
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE,ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOE,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
//°???????
//°??ü·?????
//Mode:0 ???§??????°??ü??1???§??????°??ü??
//0,????????°??ü°?????1??KEY0°?????2??KEY1°?????3??KEY2°?????4,WK_UP°??? ;
u8 KEY_Scan(u8 mode)
{
static u8 key_up=1;
if(mode)key_up=1;
if(key_up&&(KEY0==0||KEY1==0||KEY2==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(KEY2==0)return KEY2_PRES;
else if(WK_UP==1)return WKUP_PRES;
}
else if(KEY0==1&&KEY1==1&&KEY2==1&&WK_UP==0)key_up=1;
return 0;
}
////////////////////////////////图片
|
最佳答案
查看完整内容[请看2#楼]
再回头想想,哪步出问题了。
或者,像我这样,我原来也发过这样的帖,就是很奇怪的事。后面发现,用FLYMCU,烧了好多次没烧进去。导致还是原来的程序
|