OpenEdv-开源电子网

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

按键实验,不懂之处在图片箭头所处

[复制链接]

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-9-21
在线时间
1 小时
发表于 2015-9-22 23:26:41 | 显示全部楼层 |阅读模式
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,烧了好多次没烧进去。导致还是原来的程序
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
发表于 2015-9-22 23:26:42 | 显示全部楼层
再回头想想,哪步出问题了。
或者,像我这样,我原来也发过这样的帖,就是很奇怪的事。后面发现,用FLYMCU,烧了好多次没烧进去。导致还是原来的程序
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-9-21
在线时间
1 小时
 楼主| 发表于 2015-9-22 23:26:42 | 显示全部楼层
回复【8楼】沉默焚烧:
---------------------------------
我找到了一处原因,使能时钟BE那里设置成高电平了,我改下试试
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-22 23:27:57 | 显示全部楼层
没定义...
检查LED.H里面,是否定义了.
我们例程是有定义的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-9-21
在线时间
1 小时
 楼主| 发表于 2015-9-22 23:49:02 | 显示全部楼层
回复【2楼】正点原子:
嗯啊 是我没在led.h定义 可是我定义后编译是通过了,为什么那里还是显示四个大叉号啊
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-9-21
在线时间
1 小时
 楼主| 发表于 2015-9-22 23:53:01 | 显示全部楼层
回复【3楼】宋学虎:
---------------------------------
还有就是我下载程序到开发板上面,DS0灯亮    按键按下去没效果,我是按照库函数开发板来编写的,程序检查过,没问题
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-9-21
在线时间
1 小时
 楼主| 发表于 2015-9-23 00:06:04 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
你好,我看了之后是自己没定义,我定义后,编译可以通过,但是烧入后,灯不亮,按键按下去后没有一点效果,蜂鸣器不响
回复

使用道具 举报

30

主题

282

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2015-8-24
在线时间
241 小时
发表于 2015-9-23 07:56:01 | 显示全部楼层
回复【5楼】宋学虎:
---------------------------------
最好用JTAG下载,我用FLYMCU时也遇到过,没烧进去的情况。
回复

使用道具 举报

6

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-9-21
在线时间
1 小时
 楼主| 发表于 2015-9-23 09:11:22 | 显示全部楼层
回复【6楼】沉默焚烧:
---------------------------------
可是我用它给的程序就可以烧去,一切功能都可以,为什么我自己一步一步编写的和教程一样却没作用
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 05:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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