【ARM】2410裸机系列-中断处理
目的
为了更好地掌握S3C2410中断的原理及中断程序的编写。
内容利用S3C2410的外部中断0和外部中断1实现两个按键功能
原理
本次选择的是外部中断EXTINT0和EXTINT11。中断的产生分别来自按钮SB1202和SB1203,当按钮按下时,EXTINT0(对应管脚GPF0)或EXTINT11(对应管脚GPG3)和地连接,输入低电平,从而向CPU发出中断请求。
当CPU受理后,进入相应的中断服务程序,通过超级终端的主窗口显示当前进入的中断号。
程序
#include "2410addr.h"//这头文件找了好久啊,mdk里面没有,后来在一个实例中提取出来的 #include "2410lib.h" void __irq int0_int(void) //外部中断0处理函数 { uart_printf("EINT0 interrupt occurred. \n"); ClearPending(BIT_EINT0); //清除中断源 } void __irq int11_int(void) //外部中断11处理函数 { if(rEINTPEND==(<<)) //判断外部中断挂起寄存器,确定是否外部中断11 { uart_printf("EINT11 interrupt occurred. \n"); rEINTPEND=(<<); //清除中断挂起寄存器 } ClearPending(BIT_EINT8_23); } void int_init(void) //中断初始化 { rGPFCON=(rGPFCON & ~(<<) | (0x2<<)); //将CPFO配置为EINT0 rGPGCON=(rGPGCON & ~(<<) | (0x2<<)); //将CPF3配置为EINT11 pISR_EINT0=(UINT32T)int0_int; //注册中断处理函数 pISR_EINT8_23=(UINT32T)int11_int; //注册处理中断11处理函数,EINT8~23共用此函数,需要在处理函数中加入对源中断的判断 rEINTPEND=0xffffff; //清除所有外部中断挂起状态 rSRCPND=BIT_EINT0 | BIT_EINT8_23; //清除源的挂起状态 rINTPND=BIT_EINT0 | BIT_EINT8_23; //清除挂起状态 rEXTINT0=(rEXTINT0 & ~(<<)) | (0x2<<); //EINT0下降沿触发 rEXTINT1=(rEXTINT1 & ~(<<)) | (0x2<<); //EINT1Ï下降沿触发 rEINTMASK &= ~(<<); //打开外部中断11 rINTMSK &= ~(BIT_EINT0 | BIT_EINT8_23); //打开INTMSK中的中断0和中断8~23 } int main() { int_init(); while(); } //#define ClearPending(bit) {rSRCPND=bit;rINTPND=rINTPND;} //写入错误的数据 //清除中断源,注意清除的顺序,要从源头开始清除
【ARM】2410裸机系列-中断处理的更多相关文章
- 【ARM】2410裸机系列-流水灯
开发环境 1.硬件平台:FS2410(s3c2410) 2.主机:Ubuntu 12.04 LTS LED原理图 LED的GPIO的配置 配置GPFCON寄存器,设置GPF4-7为输出 配置GPF ...
- 【ARM】2410裸机系列-ADC数模转换
开发环境 1.硬件平台:FS2410 2.主机:Ubuntu 12.04 ADC寄存器配置 1.初始化ADC(ADCCON) 设置预分频,预分频因子,选择A/D转换通道,并选择正常模式 ...
- 【ARM】2410裸机系列-uart串口通信
开发环境 (1)硬件平台:FS2410 (2)主机:Ubuntu 12.04 FS2410串口的原理图 串口UART寄存器配置 配置TXD0与RXD0(GPH2.GPH3) 设置波特率(UBRDI ...
- 【ARM】2410裸机系列-按键查询式控制led
开发环境 硬件平台:FS2410 主机:Ubuntu 12.04 LTS LED灯原理图 按键原理图 按键的接线资源 KSCAN0 -> GPE11 KSCAN1 -> GPG6 ...
- ARM NEON 编程系列2 - 基本指令集
ARM NEON 编程系列2 - 基本指令集 前言 本系列博文用于介绍ARM CPU下NEON指令优化. 博文github地址:github 相关代码github地址:github NEON指令集 主 ...
- ARM NEON编程系列1-导论
ARM NEON 编程系列1 - 导论 前言 本系列博文用于介绍ARM CPU下NEON指令优化. 博文github地址:github 相关代码github地址:github NEON历史 ARM处理 ...
- 【ARM】2440裸机系列-RTC数字时钟
功能 裸机程序,实现LCD显示数字时钟 主要代码 1)背景绘制 void Brush_ U32 c) { int x,y ; for ( y = 0 ; y < LCD_HEIGHT ; y ...
- 【ARM】2440裸机系列-gpio按键控制
功能 通过GPIO,实现按键1点亮LED1,按键2点亮LED2…… 说明 1)因为2440的按键只涉及行,所以在扫描按键时比2410简单了很多 2)在进行移位操作之前,必须进行数据寄存器的初始化,否则 ...
- 【ARM】2440裸机系列-图片显示
功能 LCD显示字汉字,字符和图片 说明 汉字,字符和图片需要用相应的取模软件得到相应的c文件,然后包含到工程中 主要代码 1)绘制背景 void Brush_ U32 c) { int x,y ...
随机推荐
- Easyui + asp.net MVC 系列教程 第09-17 节 完成登录 高清录制
前面八节 在这里 Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门 在接下来的 几节里面 我们完成登录功能 打开页面 首先进入登录页面 只有登录成功了 才能进入管理 ...
- Docker 技巧:删除 Docker 所有镜像
删除所有未运行 Docker 容器 docker rm $(docker ps -a -q) 删除所有 Docker 镜像 删除所有未打 tag 的镜像 docker rmi $(docker ima ...
- Linux-使用 yum 升级 gcc 到 4.8
wget http://people.centos.org/tru/devtools-2/devtools-2.repo mv devtools-2.repo /etc/yum.repos.d yum ...
- 请问实现MVC的框架有哪些,实现持久化操作的框架有哪些,还有类似于spring整合的框架又有哪些
2011-04-10 我知道MVC框架有struts.webWork; 持久化的有hibernate.ibatis,而进行整合的我只知道spring了 ------------------- 表示层框 ...
- CentOS设置开机自动启动某服务
CentOS设置开机自动启动某服务 这里以启动sshd服务为例: 查看sshd是否已经是系统服务: # chkconfig --list |grep sshd 会显示: sshd ...
- HDU 1850 Being a Good Boy in Spring Festival (Nim博弈)
Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32 ...
- 【Spring】Spring之向 IOC 容器注入对象的三种方式
关于Spring的搭建可参见:浅析Spring框架的搭建.在测试之前还是应该先将环境配置好,将相关Jar包导进来.Spring创建的对象,默认情况下都是单例模式,除非通过scope指定. 向IOC容器 ...
- 【Oracle】Oracle约束的总结
你对ORACLE约束的了解如何?比较模糊还是相当透彻?如果你对下面几个问题了如指掌的话,恭喜你,你已经对约束掌握得比较好了,不用看这篇文章了.ORACLE的约束有啥功能作用? 有哪些类型约束(不同版本 ...
- Spark弹性分布式数据集RDD
RDD(Resilient Distributed Dataset)是Spark的最基本抽象,是对分布式内存的抽象使用,实现了以操作本地集合的方式来操作分布式数据集的抽象实现.RDD是Spark最核心 ...
- 日志收集-Flume-ng-mongodb-sink
本文主要介绍使用Flume传输数据到MongoDB的过程,内容涉及环境部署和注意事项. 一.环境搭建 1.flune-ng下载地址:http://www.apache.org/dyn/closer.c ...