初级会员

- 积分
- 177
- 金钱
- 177
- 注册时间
- 2020-4-2
- 在线时间
- 94 小时
|
4金钱
源程序:
#include "stm32f10x.h"
#include "key.h"
#include "beep.h"
#include "led.h"
int main(void)
{
LED_init();
BEEP_init();
KEY_init();
BEEP=0;
LED0=0;
LED1=0;
while(1)
{
switch(KEY_scan())
{
case 1: BEEP=!BEEP; break;
case 2: LED1=!LED1; break;
case 3: LED0=!LED0; LED1=!LED1; break;
default:break;
}
delay_ms(10);
}
}
按键程序:
#include "key.h"
void KEY_init(void)
{
GPIO_InitTypeDef temp1,temp2;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOA,ENABLE);
temp1.GPIO_Mode=GPIO_Mode_IPU;
temp1.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4;
temp1.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&temp1);
temp2.GPIO_Mode=GPIO_Mode_IPD;
temp2.GPIO_Pin=GPIO_Pin_0;
temp2.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&temp2);
}
u8 KEY_scan()
{
static u8 key_flag=1;
u8 num;
if(key_flag==1&&(KEY1==1||KEY2==0||KEY3==0))
{
delay_ms(10);
key_flag=0;
if(KEY1==1)
{
num=1;
return num;
}
if(KEY2==0)
{
num=2;
return num;
}
if(KEY3==0)
{
num=3;
return num;
}
}
else if(KEY1==0&&KEY2==1&&KEY3==1)
{
key_flag=1;
}
return 0;
}
按键输入头文件:
#ifndef __KEY_H
#define __KEY_H
#include "sys.h"
#include "delay.h"
typedef unsigned char u8;
typedef unsigned int u32;
#define KEY1 PAin(0)
#define KEY2 PEin(3)
#define KEY3 PEin(4)
void KEY_init(void);
u8 KEY_scan(void);
void delay_init(void);
#endif
是逻辑问题还是,还是少了什么东西 求解答 先感谢大佬
|
|