OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3129|回复: 5

求助~请大家指点一下我这个按键实验程序的错误之处

[复制链接]

3

主题

12

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-4-14
在线时间
6 小时
发表于 2016-7-15 10:52:10 | 显示全部楼层 |阅读模式
3金钱

[mw_shl_code=c,true]#ifndef _KEY_H
#define _KEY_H
#include "stm32f10x.h"
void KEY_Init(void);
void KEY_scan(void);
#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 LED0 PBout(5)
#define LED1 PEout(5)
#endif


#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灯都不亮,按键按下后无反应,软件仿真结果也不对~上面几行是头文件里面的内容,麻烦各位帮忙看一下问题出现在哪,谢谢大家

最佳答案

查看完整内容[请看2#楼]

仿真跟踪,看看哪里不符合你预期,问题就在哪里
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-7-15 10:52:11 | 显示全部楼层
仿真跟踪,看看哪里不符合你预期,问题就在哪里
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-8-27
在线时间
20 小时
发表于 2016-7-15 11:26:37 | 显示全部楼层
static u8 key_up=1;//按键按松开标志
放到循环体外试试
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-4-14
在线时间
6 小时
 楼主| 发表于 2016-7-15 21:32:55 | 显示全部楼层
tramp 发表于 2016-7-15 11:26
static u8 key_up=1;//按键按松开标志
放到循环体外试试

我放到了循环体外面后开发板还是没反应~
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2016-4-14
在线时间
6 小时
 楼主| 发表于 2016-7-17 20:12:10 | 显示全部楼层
正点原子 发表于 2016-7-15 22:02
仿真跟踪,看看哪里不符合你预期,问题就在哪里

找了半天原因,是板子问题,用了几年了~按键不行了
回复

使用道具 举报

3

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2016-7-19
在线时间
12 小时
发表于 2016-8-5 09:14:31 | 显示全部楼层
你把那个模式改一下试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-2 01:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表