5回答

1收藏

[原创] 【PSOC4】入门学习笔记7——简单的按键中断

英飞凌 英飞凌 8912 人阅读 | 5 人回复 | 2013-11-04

试验目的:
学习按键中断,也就是通过按键中断控制LED灯亮灭。需要说明,这次例程还是比较简单,只是了解中断是怎么工作和配置的。
步骤:
1、在原理图中放入一个数字量输入组件、一个数字量输出组件,一个中断组件。(如图1.JPG)
2、配置数字量输入组件,由于按键 接入该组件,所以这个组件配置为数字量输入,在Genneal选项中选择Drive Mode为上拉。Input选项选择下降沿中断,使能输入缓冲。(如图2.JPG)
3、编写程序:
(1)、主程序编写:如图3.JPG所示,首先需要使能全局中断,然后设置(开启)中断。定义一个标志位flag,如果它为1,改变LED的显示状态,该标志位在中断中置一。
(2)、中断函数编写:首先找到isr_1.c,这个就是中断有关的文件,找到CY_ISR函数,它就是中断处理函数。如图4.JPG所示,程序很简单,就是让flag置一,然后清除该中断的标志位。
4、下载验证:
下载后开始LED灯是亮的,按一下按键,灯灭,再按一次按键,灯亮。

试验中所遇到的问题及解决方法:
问题1:没有找到清除中断标志寄存器的函数,所以调试发现一直处于中断中。
解决方法:加入函数User_Key_ClearInterrupt(); 在组件中一直没有见到这个函数,并且与清除有关的就只有ISR_ClearPending()函数,在网上发现有人用ISR_ClearInterrupt();函数,试验了一下果然可以。
问题2:按键输入管脚没有选择上拉,结果中断有问题。
问题3:只进入一次中断,原因是配置输入组件时,Input选项没有使能输入缓冲。




1.JPG (29.69 KB, 下载次数: 75)

1.JPG

2.JPG (39.09 KB, 下载次数: 80)

2.JPG

3.JPG (44.74 KB, 下载次数: 80)

3.JPG

4.JPG (25.83 KB, 下载次数: 77)

4.JPG

点评

cytypes.h定义了CY_ISR宏  发表于 2013-11-4 12:12
分享到:
回复

使用道具 举报

回答|共 5 个

倒序浏览

沙发

fj1161

发表于 2013-11-4 11:31:57 | 只看该作者

顶一个~~~~~~~~~~·
第五年了,这次一定要坚持到底,不留遗憾!!!
板凳

sacq12

发表于 2013-11-4 22:19:29 | 只看该作者

记录很详细~~
地板

mxj1005071012

发表于 2013-11-23 15:06:10 | 只看该作者

不知为什么我就是不能使用User_Key_ClearInterrupt(); 或者ISR_ClearInterrupt();
5#

党国特派员

发表于 2016-11-23 11:01:55 | 只看该作者

记录很详细~~
喜欢在构思妙想,电子产品DIY是工作,也是一种爱好。
6#

feixiang20

发表于 2017-12-17 21:33:16 | 只看该作者

做个标记,有空学下
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条