1、其底板按键原理图

将EINT1到核心板原理图去搜

可以看出它对应GPF1这个引脚,

到s3c2440的I/O引脚去找GPF这一组。

a、配置这些按键引脚,即初始化这些中断源

b、初始化中断控制器

我们的按键没有子中断,故不需要设置SUBMASK寄存器,只需要去设置MASK寄存器,对于MODE和Priority保持默认值即可。

保证EINT0、1、2、4保持可以被中断,不能被屏蔽。

在这里对于第四位对应EINT4-7,设置第四位就是设置4-7位,那么要分开对他们怎么设置呢,这时候还有一个寄存器就是EINTMASK

所以可以单独对每一个中断进行设置。注意EINTMASK要在INTMASK之前进行设置!!!!

去操作CPSR寄存器来打开总中断

在2440中,当中断产生的时候会到中断向量表中找到ldr pc,irq

然后进入到irq标号:

首先保存环境

下面去编写handle_int这个中断处理函数:

如果这个寄存器的值等于0说明了EINT0产生了中断,为30,则INT_RTC产生了中断,等等

找到答案:EINT4-7都是产生IRQ4:按键3(EINT5)和按键4(EINT6)产生的中断,都是IRQ4,就是说INTOFFSET的值都是4。
然后需要进一步分辨是哪个中断,这可以通过读取EINTPEND寄存器来分辨。

在处理完之后,要清除中断的工作,把SRCPND以及INTPND相应位清零。如果使用了子中断还要清零SUBSRCPND清零,如果用 到了EINT4-7,EINT8-23还要把相应位清零。

在处理函数中去清除

别忘了栈的初始化,因为我们已经来是在SVC模式下的R13_SVC栈,而我们进入中断要进行中断的R13_IRQ栈的初始化。如何初始化中断的栈,首先让处理器进入中断模式

M0-M4设置为中断模式,

转载于:https://www.cnblogs.com/gary-guo/p/5596701.html

2440按键中断编程相关推荐

  1. c语言 执行free函数程序被卡住,FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法...

    FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法 时间:2019-08-10 14:39:47  来源:  作者:  所属栏目:其他服务端 这里将告诉您FreeRT ...

  2. S3C2440中断解析和基于WINCE操作系统的中断分析(整理于网络,用于按键中断使用)

    在调试CAN总线的时候,遇到了操作系统的中断,为了彻底的弄清楚中断是怎么回事?我先从底层的中断开始研究,在这里我们只讨论外部中断,下面就结合S3C2440TEST测试程序来分析一下中断是怎么执行的:我 ...

  3. Esp8266 进阶之路25【高级篇】深聊下esp8266的串口 Uart 通讯中断编程,为您准备好了 NONOS 版本 和 RTOS 系统的串口驱动文件。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  4. STM32——中断、EXTI、按键中断实验

    STM32中断--总结及实操 一.中断是什么? 1.1 中断的含义 1.2 中断的作用(了解即可) 1.3 中断的流程 二.中断资源 2.1 NVIC中断控制器 2.2 NVIC寄存器 三.优先级的概 ...

  5. ps 2c语言程序,MicroBlaze中断编程——以PS/2键盘输入为例

    在最近的工程中,需要用到PS/2键盘和鼠标作为控制输入,所以在网上找了一些相关的资料,内容很丰富,看来已经有很多人做过了这方面的编程.本篇Blog算是实践总结,为以后的开发积累一些基础知识. Micr ...

  6. 探测函数 中断 linux,linux中断编程函数

    总结下linux中断编程的函数,方便下次使用时查看. 1.中断申请和释放 int request_irq( unsigned int irq, irq_handler_t handler, unsig ...

  7. hal库开启中断关中断_[STM32]HAL库下GPIO按键中断与去抖问题分析(分析源码解决问题)...

    自上篇文章STM32 非阻塞HAL_UART_ReceiveIT解析与实际应用,具体总结了HAL库下套娃函数中如何看清库函数的脉络,更细致的认识调用的过程,以解决潜在的问题.又又又遇到了新的问题(GP ...

  8. SOPC第四课 按键中断

    按键 LED控制 开发板 小梅哥AC620 软件 quartus 13.1 2个按键,当按键0按下时,LED灯开始闪烁:当按键1按下时,LED灯停止闪烁. 使用一个PIO 这个PIO设置为6位(4个L ...

  9. [arm驱动]linux内核中断编程

    第一部分获取中断(开启硬件中断) 一.中断的申请注销: 1)中断的申请 1 2 int request_irq(unsigned int irq, irq_handler_t handler,     ...

最新文章

  1. HDU4857拓扑排序模版题
  2. 7能看出圆的周长吗_分手后真的能看出一个人的人品吗
  3. 【Scratch】青少年蓝桥杯_每日一题_8.03_飞猫
  4. Vim 中文件目录浏览插件——NERD tree
  5. leetcode512. 游戏玩法分析 II(SQL)
  6. 【OpenCV 例程200篇】74. 图像的抗混叠
  7. Redis源码分析(一)--Redis结构解析
  8. 【Android】状态栏通知Notification、NotificationManager详解
  9. 洛谷——P2525 Uim的情人节礼物·其之壱
  10. 【Java】函数使用
  11. Sixpack —— 支持多语言的 A/B 测试框架
  12. 基于粒子群优化算法的BP神经网络预测模型(Matlab代码实现)
  13. 台达plc控制伺服电机编程实例_三菱PLC控制伺服电机得编程实例
  14. Openwrt GCC 7.5编译sanitizer_internal_defs.h错误
  15. groovy curry的用处
  16. 笔记本选购指南2020双十一
  17. ModelCoder:实现汽车四轮转向控制系统的建模仿真
  18. 个人电子邮箱如何在网页进行登录?
  19. 拐道交叉的css3动画,CSS3图片翻转动画技术详解
  20. Centos7.3开机自动启动或执行指定命令

热门文章

  1. POJ 3517 And Then There Was One( 约瑟夫环模板 )
  2. InvokeHelper:多线程修改主界面控件属性并调用其中方法
  3. 代码生成技术--CodeDom VS T4
  4. 右下角android sdk content loader 加载很慢的解决方法
  5. android InputStream中read()与read(byte[] b)
  6. so使用原则(要么不支持,要么全部支持) 固定的运行平台 指定目录:System.load(/data/data/package-name/mydir/libmath.so);
  7. android log system
  8. Linux性能分析—CPU篇
  9. ListView实现倒序显示
  10. Acticity切换时ScrollView不停留原位置,自动滚动其他位置