OpenEdv-开源电子网

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

stm32中长按和短按

[复制链接]

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
发表于 2017-7-23 13:36:25 | 显示全部楼层 |阅读模式
1金钱
为什么我这个程序不行,是哪里错了?我调试的为什么按键没有按下就会跳过第一个if语句,进入第二个while语句,还有就是为什么KEY_UP键松开后为什么还是在while语句中循环?
无标题.png

实验1 跑马灯实验 - 副本.rar

2.61 MB, 下载次数: 96

最佳答案

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

u8 KeyTime; delay_init(168); //初始化延时函数 LED_Init(); //初始化LED端口 RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA,ENABLE); keyinit();加上 keyinit就行了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
465
金钱
465
注册时间
2016-1-20
在线时间
89 小时
发表于 2017-7-23 13:36:26 | 显示全部楼层
  u8 KeyTime;         delay_init(168);                  //初始化延时函数         LED_Init();  //初始化LED端口   RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA,ENABLE);         keyinit();加上  keyinit就行了
回复

使用道具 举报

0

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
261
金钱
261
注册时间
2017-7-19
在线时间
31 小时
发表于 2017-7-23 14:38:29 | 显示全部楼层
程序和结果没有问题啊,你按键按下进入第一个if,松开后就跳出if语句,不会在里面等着的
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-7-23 14:55:11 | 显示全部楼层
SunMike 发表于 2017-7-23 14:38
程序和结果没有问题啊,你按键按下进入第一个if,松开后就跳出if语句,不会在里面等着的

但是我试了的,不行。松开后也是在里面循环,跳不出来
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-7-23 14:57:46 | 显示全部楼层
SunMike 发表于 2017-7-23 14:38
程序和结果没有问题啊,你按键按下进入第一个if,松开后就跳出if语句,不会在里面等着的

我下载到板子里面,我长按,灯也不亮
回复

使用道具 举报

0

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
261
金钱
261
注册时间
2017-7-19
在线时间
31 小时
发表于 2017-7-23 15:17:07 | 显示全部楼层
学习32 发表于 2017-7-23 14:57
我下载到板子里面,我长按,灯也不亮

我这里灯是会亮的啊
回复

使用道具 举报

0

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
261
金钱
261
注册时间
2017-7-19
在线时间
31 小时
发表于 2017-7-23 15:19:25 | 显示全部楼层
而且你的灯亮和灯灭的两行IO口都不一样的
回复

使用道具 举报

0

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
261
金钱
261
注册时间
2017-7-19
在线时间
31 小时
发表于 2017-7-23 15:25:24 | 显示全部楼层
if(KeyTime>2) //3¤°′
                        {
        KeyTime=0;
                        GPIO_ResetBits(GPIOF,GPIO_Pin_9);   //μÆáá
                        }
       else
      GPIO_SetBits(GPIOF,GPIO_Pin_10);//μÆÃe
你这几句,即使KeyTime>2,进入if,KeyTime=0,亮一下后不是直接进到else里,又灭了,根本看不到,你在灯亮的后面加个延时可以看到效果
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2017-7-24 09:28:34 | 显示全部楼层
呃呃。你按键都没初始化呀。。。写了方法但是没调用。。。
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-7-25 11:43:26 | 显示全部楼层
BMN李 发表于 2017-7-24 09:28
呃呃。你按键都没初始化呀。。。写了方法但是没调用。。。

我初始化了啊,你仔细看下
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-7-25 11:52:53 | 显示全部楼层
那为什么将 keyinit();这句加到前面就不得行,加到PA使能这句之后才行?能不能解释一下,我是刚学32的,所以想问下,谢谢
回复

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2017-7-23
在线时间
32 小时
 楼主| 发表于 2017-7-25 12:12:25 | 显示全部楼层
我想明白了,是要先使能才能调用初始化,谢谢各位
回复

使用道具 举报

16

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1292
注册时间
2014-12-20
在线时间
534 小时
发表于 2017-7-25 14:45:43 | 显示全部楼层
学习32 发表于 2017-7-25 11:43
我初始化了啊,你仔细看下

笑而不语
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-16 22:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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