目的

为了更好地掌握S3C2410中断的原理及中断程序的编写。

内容利用S3C2410的外部中断0和外部中断1实现两个按键功能


原理

本次选择的是外部中断EXTINT0和EXTINT11。中断的产生分别来自按钮SB1202和SB1203,当按钮按下时,EXTINT0(对应管脚GPF0)或EXTINT11(对应管脚GPG3)和地连接,输入低电平,从而向CPU发出中断请求。

当CPU受理后,进入相应的中断服务程序,通过超级终端的主窗口显示当前进入的中断号。


程序

 1 #include "2410addr.h"//这头文件找了好久啊,mdk里面没有,后来在一个实例中提取出来的
 2
 3 #include "2410lib.h"
 4
 5 void __irq int0_int(void)   //外部中断0处理函数
 6
 7 {
 8
 9    uart_printf("EINT0 interrupt occurred. \n");
10
11    ClearPending(BIT_EINT0);    //清除中断源
12
13 }
14
15 void __irq int11_int(void)  //外部中断11处理函数
16
17 {
18
19 if(rEINTPEND==(1<<11))  //判断外部中断挂起寄存器,确定是否外部中断11
20
21    {
22
23        uart_printf("EINT11 interrupt occurred. \n");
24
25        rEINTPEND=(1<<11);  //清除中断挂起寄存器
26
27    }
28
29    ClearPending(BIT_EINT8_23);
30
31 }
32
33 void int_init(void) //中断初始化
34
35 {
36
37    rGPFCON=(rGPFCON & ~(3<<0) | (0x2<<0)); //将CPFO配置为EINT0
38
39    rGPGCON=(rGPGCON & ~(3<<6) | (0x2<<6)); //将CPF3配置为EINT11
40
41    pISR_EINT0=(UINT32T)int0_int;   //注册中断处理函数
42
43    pISR_EINT8_23=(UINT32T)int11_int;
44
45 //注册处理中断11处理函数,EINT8~23共用此函数,需要在处理函数中加入对源中断的判断
46
47    rEINTPEND=0xffffff; //清除所有外部中断挂起状态
48
49    rSRCPND=BIT_EINT0 | BIT_EINT8_23;   //清除源的挂起状态
50
51    rINTPND=BIT_EINT0 | BIT_EINT8_23;   //清除挂起状态
52
53    rEXTINT0=(rEXTINT0 & ~(7<<0)) | (0x2<<0);   //EINT0下降沿触发
54
55    rEXTINT1=(rEXTINT1 & ~(7<<0)) | (0x2<<12);  //EINT1Ï下降沿触发
56
57    rEINTMASK &= ~(1<<11);  //打开外部中断11
58
59    rINTMSK &= ~(BIT_EINT0 | BIT_EINT8_23); //打开INTMSK中的中断0和中断8~23
60
61 }
62
63 int main()
64
65 {
66
67    int_init();
68
69 while(1);
70
71 }
72
73 //#define ClearPending(bit) {rSRCPND=bit;rINTPND=rINTPND;}
74
75 //写入错误的数据
76
77 //清除中断源,注意清除的顺序,要从源头开始清除

View Code

转载于:https://www.cnblogs.com/lcw/p/3159420.html

【ARM】2410裸机系列-中断处理相关推荐

  1. arm裸机与嵌入式linux驱动开发,如何编写基于ARM的裸机程序和基于Linux的驱动程序?...

    在嵌入式开发中,ADC应用比较频繁,本文主要讲解ADC的基本原理以及如何编写基于ARM的裸机程序和基于Linux的驱动程序. ARM架构:Cortex-A9Linux内核:3.14 在讲述ADC之前, ...

  2. swi 指令能用在C语言吗,ARM的SWI异常中断处理程序设计

    原标题:ARM的SWI异常中断处理程序设计 本节主要介绍编写 处理程序时需要注意的几个问题,包括判断SWI中断号,使用汇编语言编写SWI异常处理函数,使用C语言编写SWI异常处理函数,在特权模式下使用 ...

  3. 如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M7系列MCU进行SWD接口调试

    该篇幅介绍如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M系列MCU进行SWD接口调试? 如何连接FT2232HL Debuger Adapter和目标板的的SWD调 ...

  4. ARM GPU mali系列产品规划图或天梯图

    ARM GPU mali系列产品规划图或天梯图 一.arm MALI 图像处理器蓝图 二.Mali GPU天梯图 一.arm MALI 图像处理器蓝图 新一代GPU Mali G52/G31 发布,强 ...

  5. 关于ARM Cortex a 系列的看门狗定时器

    关于ARM cortex a系列的看门狗定时器,现在以三星公司的S5PV210为例子,来讨论学习一下看门狗定时器的相关知识. 刚开始学习使用英文技术手册,很多都不太习惯,不过还是坚持吧. 看门狗定时器 ...

  6. ARM Cortex各系列处理器分类比较

    目录 Cortex-M系列 Cortex-M0: Cortex-M0+: Cortex-M1: Cortex-M3: Cortex-M4: Cortex-M7: 规格对比 Cortex-A系列 Cor ...

  7. Exynos4412裸机开发——中断处理

    以KEY2控制LED3亮灭为例: 一.轮询方式 [0]检测按键k2,按键k2按下一次,灯LED2闪一次. [1]查看原理图,连接引脚和控制逻辑 (1)按键k2 连接在GPX1_1引脚 (2)控制逻辑 ...

  8. 【转】ARM GIC中断系列(八):gicv3架构-波形为例、系列总结

    花了一天,边玩边看,把这个系列看完了.感叹确实卢俊前辈对于gic的掌握程度. 肯定很多的东西看了就忘了,这是正常的,在以后如果有用到的话,再回过头来,结合实践应该会映像深刻. 1.波形 以下以gic6 ...

  9. 【转】ARM GIC中断系列(二):gicv2架构基础

    原文来自前辈:http://www.lujun.org.cn/?p=3861 真的很优秀的文章 ARM的cpu,特别是cortex-A系列的CPU,目前都是多core的cpu,因此对于多core的cp ...

  10. ARM嵌入式裸机简单使用

    基于正点原子 ALPHA开发板,长文预警,建议收藏用到之后再查看 文章目录 主频与时钟 I.MX6U系统时钟分析 7路PLL 时钟树 外设如何选择时钟 需要初始化的PLL和PFD I.MX6U系统配置 ...

最新文章

  1. 在windows下配置pthread多线程
  2. 用于可解释机器学习的 Python 库
  3. 注册修复动态链接库DLL文件
  4. 开启注解缓存_Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解
  5. 现实工程中常用到的C语言函数总结(不断更新)
  6. Java栈和局部变量操作(二)
  7. java toregex_Java Regex to check Min/Max Length of Input Text
  8. python算法攻略_算法基础及python实现笔记一(堆和DFS)
  9. SAP UI5 js file will be executed immediately after downloaded successfully
  10. 《我和他的结婚录像和相册集》的快速传播
  11. linux php没有bin,php - 执行Linux命令没有报错但也没有输出
  12. 一步一步写算法(之二叉树广度遍历)
  13. 【报告分享】2019年在线教育培训行业分析报告.pdf(附下载链接)
  14. Centos7安装完毕后无法联网的解决方法(转)
  15. Ubuntu 安装之后无法连接网络问题
  16. Internet Explorer 无法打开 Internet 站点
  17. 将【axmol】引擎的OpenAL实现在iOS平台替换openal-soft详细过程
  18. IoT黑板报0207:MU-MIMO技术让网络龟速变神速
  19. java 数组怎么求和,感动,我终于学会了Java对数组求和
  20. PYTHON对接国际验证码接口

热门文章

  1. python pandas 之drop()函数
  2. 总结 图(有向图、无向图、权、度、存储结构、邻接矩阵、领接表 概念)
  3. 绘制神经网络工具汇总(重要)
  4. 深度学习(一)TensorFlow入门教程集合
  5. Where does the error come from?----Bias and Variance
  6. 2021-08-06 MD5mysql 加密校验
  7. java发牌_Java实现洗牌发牌的方法
  8. java静态和动态的区别是什么_java中静态资源和动态资源的区别
  9. 获取android设备唯一编号_如何获取Android设备唯一识别码
  10. java 如何去掉http debug日志_谈谈日志的最佳实践