【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 ...
随机推荐
- The minimum required Cuda capability is 3.7.
stackoverflow上早有讨论 https://stackoverflow.com/questions/33651810/the-minimum-required-cuda-capability ...
- 查看linux设备文件系统类型的方法
网络上找来找去没有找到简单的,最后翻了鸟哥的书就找到了,鸟哥的书还是真的有用心写的. /proc/filesystems 当前被内核支持的文件系统类型列表文件 /etc/filesystems 系统已 ...
- 树莓派进阶之路 (028) - 树莓派SQLite3的安装
MySQL占用内存太大,而SQLite是一款轻量级零配置数据库,非常适合在树莓派和其他嵌入式系统中使用.SQLite文档详细资料丰富,本文不会详细解释SQLite数据库操作的方方面面,只能结合具体场景 ...
- ROS学习(九)—— rqt_console 和 roslaunch
一.rqt_console 和rqt_logger_level 1.作用: rqt_console依据ROS编译日志,输出节点信息 rqt_logger_level可以改变节点的警告出差的警告等级 2 ...
- 手动修改magento域名
So it turns out the problem was that Apache didn't have write permissions to the WEBROOT/var directo ...
- VS与SQL资源
经常在网上看到有同学费尽心思的找SQL server数据库各版本的下载地址,看到别人的求助贴就不自觉的想去帮助他们,但是一个一个去帮助又不太现实,毕竟个人精力有限,既然大家有需求,那么笔者就本着乐于分 ...
- 用vs调试sql存储过程
大家有没有给存储过程找错误的经历,一遍遍的去读sql代码,发现一个小错误可能都要用很长的时间,这次介绍用vs2010调试存储过程,用起来和在vs里调试代码一样,非常爽. 首先,打开 ...
- 【Android】Android实现Handler异步详解
方式不止一种,这里使用的是Timer类,创建一个定时器.我们经常需要获得移动设备端口的显示屏信息,但是onCreate()方法执行的时候,OnShow()方法不一定执行了,也就是说,在执行Oncrea ...
- 开源项目mark
1. Apache的开源软件列表 http://www.oschina.net/project/apache 2. Java开源Apache项目 http://www.open-open.com/56 ...
- 项目记录25--unity-tolua框架 View02---BasePanel.lua
还在,还在. ... . 每天晚上找点时间写点点,多了也不想学到底是什么心理啊. 写完看电影去. 今天写两个算超完毕了BaseUI.lua,UIManager.lua(完好中这个) local Bas ...