新手上路
- 积分
- 41
- 金钱
- 41
- 注册时间
- 2016-4-14
- 在线时间
- 6 小时
|
[mw_shl_code=c,true]#include "KEY.h"
#include "delay.h"
#include "sys.h"
int main()
{
//KEY_Init();
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; //初始化按键KEY0,KEY1,KEY2
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5; //初始化LED1灯DS1
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5; //初始化LED0灯DS0
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
LED0=1; //使LED0和LED1处于灭的状态
LED1=1;
while(1)
{
static u8 key_up=1;//按键按松开标志
if(key_up&&(KEY0==0||KEY1==0||KEY2==0))
{
key_up=0;
delay_ms(10);//防抖动
if(KEY0==0) //如果检测到KEY0按下,则翻转LED0
{LED0=!LED0;}
if(KEY1==0) //如果检测到KEY1按下,则翻转LED1
{LED1=!LED1;}
if(KEY2==0) //如果检测到KEY2按下,则同时翻转LED0和LED1
{LED0=!LED0;
LED1=!LED1;}
}
else if(KEY0==1&&KEY1==1&&KEY2==1)key_up=1;
}
}
[/mw_shl_code]
我想过按键实验来实现这样一个简单的功能,KEY0控制LED0灯的翻转,KEY1控制LED1灯的翻转,KEY2控制LED0以及LED1的同时翻转,但程序编完后烧录进stm32战舰开发板中两个LED灯都不亮,按键按下后无反应,软件仿真结果也不对~麻烦各位帮忙看一下问题出现在哪,谢谢大家
|
|