【ARM】2410裸机系列-中断处理
目的
为了更好地掌握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裸机系列-中断处理相关推荐
- arm裸机与嵌入式linux驱动开发,如何编写基于ARM的裸机程序和基于Linux的驱动程序?...
在嵌入式开发中,ADC应用比较频繁,本文主要讲解ADC的基本原理以及如何编写基于ARM的裸机程序和基于Linux的驱动程序. ARM架构:Cortex-A9Linux内核:3.14 在讲述ADC之前, ...
- swi 指令能用在C语言吗,ARM的SWI异常中断处理程序设计
原标题:ARM的SWI异常中断处理程序设计 本节主要介绍编写 处理程序时需要注意的几个问题,包括判断SWI中断号,使用汇编语言编写SWI异常处理函数,使用C语言编写SWI异常处理函数,在特权模式下使用 ...
- 如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M7系列MCU进行SWD接口调试
该篇幅介绍如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M系列MCU进行SWD接口调试? 如何连接FT2232HL Debuger Adapter和目标板的的SWD调 ...
- ARM GPU mali系列产品规划图或天梯图
ARM GPU mali系列产品规划图或天梯图 一.arm MALI 图像处理器蓝图 二.Mali GPU天梯图 一.arm MALI 图像处理器蓝图 新一代GPU Mali G52/G31 发布,强 ...
- 关于ARM Cortex a 系列的看门狗定时器
关于ARM cortex a系列的看门狗定时器,现在以三星公司的S5PV210为例子,来讨论学习一下看门狗定时器的相关知识. 刚开始学习使用英文技术手册,很多都不太习惯,不过还是坚持吧. 看门狗定时器 ...
- ARM Cortex各系列处理器分类比较
目录 Cortex-M系列 Cortex-M0: Cortex-M0+: Cortex-M1: Cortex-M3: Cortex-M4: Cortex-M7: 规格对比 Cortex-A系列 Cor ...
- Exynos4412裸机开发——中断处理
以KEY2控制LED3亮灭为例: 一.轮询方式 [0]检测按键k2,按键k2按下一次,灯LED2闪一次. [1]查看原理图,连接引脚和控制逻辑 (1)按键k2 连接在GPX1_1引脚 (2)控制逻辑 ...
- 【转】ARM GIC中断系列(八):gicv3架构-波形为例、系列总结
花了一天,边玩边看,把这个系列看完了.感叹确实卢俊前辈对于gic的掌握程度. 肯定很多的东西看了就忘了,这是正常的,在以后如果有用到的话,再回过头来,结合实践应该会映像深刻. 1.波形 以下以gic6 ...
- 【转】ARM GIC中断系列(二):gicv2架构基础
原文来自前辈:http://www.lujun.org.cn/?p=3861 真的很优秀的文章 ARM的cpu,特别是cortex-A系列的CPU,目前都是多core的cpu,因此对于多core的cp ...
- ARM嵌入式裸机简单使用
基于正点原子 ALPHA开发板,长文预警,建议收藏用到之后再查看 文章目录 主频与时钟 I.MX6U系统时钟分析 7路PLL 时钟树 外设如何选择时钟 需要初始化的PLL和PFD I.MX6U系统配置 ...
最新文章
- 在windows下配置pthread多线程
- 用于可解释机器学习的 Python 库
- 注册修复动态链接库DLL文件
- 开启注解缓存_Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解
- 现实工程中常用到的C语言函数总结(不断更新)
- Java栈和局部变量操作(二)
- java toregex_Java Regex to check Min/Max Length of Input Text
- python算法攻略_算法基础及python实现笔记一(堆和DFS)
- SAP UI5 js file will be executed immediately after downloaded successfully
- 《我和他的结婚录像和相册集》的快速传播
- linux php没有bin,php - 执行Linux命令没有报错但也没有输出
- 一步一步写算法(之二叉树广度遍历)
- 【报告分享】2019年在线教育培训行业分析报告.pdf(附下载链接)
- Centos7安装完毕后无法联网的解决方法(转)
- Ubuntu 安装之后无法连接网络问题
- Internet Explorer 无法打开 Internet 站点
- 将【axmol】引擎的OpenAL实现在iOS平台替换openal-soft详细过程
- IoT黑板报0207:MU-MIMO技术让网络龟速变神速
- java 数组怎么求和,感动,我终于学会了Java对数组求和
- PYTHON对接国际验证码接口
热门文章
- python pandas 之drop()函数
- 总结 图(有向图、无向图、权、度、存储结构、邻接矩阵、领接表 概念)
- 绘制神经网络工具汇总(重要)
- 深度学习(一)TensorFlow入门教程集合
- Where does the error come from?----Bias and Variance
- 2021-08-06 MD5mysql 加密校验
- java发牌_Java实现洗牌发牌的方法
- java静态和动态的区别是什么_java中静态资源和动态资源的区别
- 获取android设备唯一编号_如何获取Android设备唯一识别码
- java 如何去掉http debug日志_谈谈日志的最佳实践