OpenEdv-开源电子网

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

外部中断服务函数问题

[复制链接]

22

主题

117

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
798
金钱
798
注册时间
2015-10-24
在线时间
160 小时
发表于 2016-6-6 15:54:13 | 显示全部楼层 |阅读模式
1金钱
void EXTI2_IRQHandler(void)
{
        delay_ms(10);
        if(KEY2 == 0)
        {
                data++;
        }
        EXTI_ClearITPendingBit(EXTI_Line2);
}

如何让data一直加?????????????

最佳答案

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

我觉得使用扫描吧,一般情况按键我很少用中断,当然具体还是看需求 1、中断里还是不要加延时 2、既然触发中断后,中断里还是要扫描按键,那就干脆使用扫描来得好 3、扫描按键,定时判断按键是否长按 4、我只能给你参考,很多东西还得看需求,可以百度一下,很多前辈总结的按键程序,都是很经典的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

183

帖子

0

精华

高级会员

Rank: 4

积分
684
金钱
684
注册时间
2016-1-27
在线时间
184 小时
发表于 2016-6-6 15:54:14 | 显示全部楼层
Time_Zero 发表于 2016-6-7 17:23
是的
可以实现吗
还是要采用其他的方案。。。。。

我觉得使用扫描吧,一般情况按键我很少用中断,当然具体还是看需求
1、中断里还是不要加延时
2、既然触发中断后,中断里还是要扫描按键,那就干脆使用扫描来得好
3、扫描按键,定时判断按键是否长按
4、我只能给你参考,很多东西还得看需求,可以百度一下,很多前辈总结的按键程序,都是很经典的
回复

使用道具 举报

30

主题

1170

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1993
金钱
1993
注册时间
2016-2-16
在线时间
527 小时
发表于 2016-6-6 16:26:23 | 显示全部楼层
能表达清楚你问的什么么
回复

使用道具 举报

13

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2015-4-26
在线时间
173 小时
发表于 2016-6-6 16:32:21 | 显示全部楼层
按键按下,一直累加?
回复

使用道具 举报

22

主题

117

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
798
金钱
798
注册时间
2015-10-24
在线时间
160 小时
 楼主| 发表于 2016-6-6 16:32:40 | 显示全部楼层
憨厚诚实大叔 发表于 2016-6-6 16:26
能表达清楚你问的什么么

就是在外部中断里面让data连续加
就像原子那个按键处理函数那样
回复

使用道具 举报

22

主题

117

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
798
金钱
798
注册时间
2015-10-24
在线时间
160 小时
 楼主| 发表于 2016-6-6 16:33:31 | 显示全部楼层
康仔呦 发表于 2016-6-6 16:32
按键按下,一直累加?

是的
回复

使用道具 举报

4

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2016-4-7
在线时间
32 小时
发表于 2016-6-6 19:08:49 | 显示全部楼层
写进 while循环里你敢吗? 哈哈
回复

使用道具 举报

22

主题

117

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
798
金钱
798
注册时间
2015-10-24
在线时间
160 小时
 楼主| 发表于 2016-6-6 20:05:43 | 显示全部楼层
zhouchen5353845 发表于 2016-6-6 19:08
写进 while循环里你敢吗? 哈哈

变化太快了
没实际用处,我想达到的效果就是原子哥写的那按键处理程序!!!!
回复

使用道具 举报

4

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2016-4-7
在线时间
32 小时
发表于 2016-6-6 20:11:42 | 显示全部楼层
加上delay延时。
回复

使用道具 举报

22

主题

117

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
798
金钱
798
注册时间
2015-10-24
在线时间
160 小时
 楼主| 发表于 2016-6-6 20:38:45 | 显示全部楼层

最少要80ms才可以
现在就是不知道有没有更好的方案
回复

使用道具 举报

4

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2016-4-7
在线时间
32 小时
发表于 2016-6-7 17:07:59 | 显示全部楼层
本帖最后由 zhouchen5353845 于 2016-6-7 21:22 编辑
Time_Zero 发表于 2016-6-6 20:38
最少要80ms才可以
现在就是不知道有没有更好的方案

12345678978979787
回复

使用道具 举报

0

主题

183

帖子

0

精华

高级会员

Rank: 4

积分
684
金钱
684
注册时间
2016-1-27
在线时间
184 小时
发表于 2016-6-7 17:16:22 | 显示全部楼层
按键触发中断,长按data一直累加吗?
回复

使用道具 举报

22

主题

117

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
798
金钱
798
注册时间
2015-10-24
在线时间
160 小时
 楼主| 发表于 2016-6-7 17:23:16 | 显示全部楼层
不吃鱼的老鼠 发表于 2016-6-7 17:16
按键触发中断,长按data一直累加吗?

是的
可以实现吗
还是要采用其他的方案。。。。。
回复

使用道具 举报

0

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2014-9-26
在线时间
8 小时
发表于 2016-6-7 17:34:04 | 显示全部楼层
那就需要延时检测了,例如50ms后检测按键的状态,如果是按下加1,以此类推。
回复

使用道具 举报

22

主题

117

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
798
金钱
798
注册时间
2015-10-24
在线时间
160 小时
 楼主| 发表于 2016-6-7 17:47:17 | 显示全部楼层
穹鸟无痕 发表于 2016-6-7 17:34
那就需要延时检测了,例如50ms后检测按键的状态,如果是按下加1,以此类推。

这个实际意义不是很大
回复

使用道具 举报

4

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2016-5-19
在线时间
30 小时
发表于 2016-6-8 09:14:16 | 显示全部楼层
按键程序,基本上用扫描,定时器加状态机,实现各种按键动作!
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13122
金钱
13122
注册时间
2012-11-26
在线时间
3813 小时
发表于 2016-6-8 09:20:12 | 显示全部楼层
能想到两个方式:
1、当第一次按键的时候,触发一个定时器,定时器定期扫描
2、用RTOS,做成一个任务,轮询方式做
学无止境
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 12:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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