深入理解ARM体系架构S3C6410外部中断控制实例

发布者:数字舞者最新更新时间:2016-05-12 来源: eefocus关键字:ARM  体系架构  S3C6410  外部中断控制 手机看文章 扫描二维码
随时随地手机看文章
关于S3C6410的中断问题,网上有很多高手已经分析过了,在这里我主要分析S3C6410实现过程,和自己已经编写好的简单程序。

我用的是mini6410 的k1键实现外部中断。

 

按键初始化:

 

void Key_Init()
{
	rGPNCON|=(1<<1);  //将GPN0设置为中断模式
	rGPNPUD&=~(1<<0);//上拉电阻
	rEINT0CON0|=(3<<0); //下降沿触发
	rEINT0MASK&=~(1<<0);  //取消屏蔽
	rEINT0FLTCON0|=(1<<7);  //延时滤波
}

注意:我在这只初始化了一个引脚,即GPNCON0

 

 

按键中断程序:

 

 

void Key_ISR() __irq  //按键中断函数
{
	i++;
	
	if(i%2==0)Led_Display(0x0);//在这里用户可添加其他的处理操作
	else Led_Display(0xf);
	
	rEINT0PEND|=(1<<0);//写1清除中断
	INTC_ClearVectAddr();//这个函数下面我们再介绍
}

 

 

/*
清除中断指示,防止干扰下一次中断发生
*/
void INTC_ClearVectAddr(void)
{
   rVIC0ADDR = 0x0;
   rVIC1ADDR = 0x0;
}


 

中断初始化函数:

 

 

void INTC_Init(void) 
{
  //关闭所有中断
  rVIC0INTENCLEAR = 0xffffffff; 
  rVIC1INTENCLEAR = 0xffffffff; 
  
  //都设置为IRQ
  rVIC0INTSELECT = 0x0;
  rVIC1INTSELECT = 0x0;
  
  INTC_ClearVectAddr();
  
}

使能中断函数:

 

 

 

//打开某一个中断

int INTC_Enable(unsigned int intNum)
{
    if(intNum > INT_LIMIT)//数值检测
     {
        return -1;
     }
     
	

	if(intNum<32)//如果是vic0组
	{
		
		rVIC0INTENABLE |= (1<

 

 

指定中断程序函数:

 

void INTC_SetIntISR(unsigned int intNum, void (*isr)(void) __irq)
{
  if(intNum > INT_LIMIT)//数值检测
     {
        return ;
     }
     
     if(intNum < 32)//如果是vic0组
     {
         VIC0VECTADDR[intNum] = (unsigned )isr;
        
     }
     else//如果是vic1组
     {
         VIC1VECTADDR[intNum-32] = (unsigned )isr;
     }
}

 

编写main函数:

 

	Led_Init();//led初始化
	
	Led_Display(0x0);//控制led
	
	Key_Init();//按键初始化
	INTC_Init();//中断初始化
	INTC_Enable(INT_EINT0);//中断使能
	INTC_SetIntISR(INT_EINT0,Key_ISR);//指定中断处理函数
	
	while(1);//等待

 

关键字:ARM  体系架构  S3C6410  外部中断控制 引用地址:深入理解ARM体系架构S3C6410外部中断控制实例

上一篇:GNU ARM汇编(四)中断汇编之非嵌套中断处理
下一篇:mini2440按键中断控制led灯遇到的问题

推荐阅读最新更新时间:2024-03-16 14:53

新一代RISC微处理器ARM11的特点及关键技术
ARM11系列微处理器是ARM公司近年推出的新一代RISC处理器,它是ARM新指令架构——ARMv6的第一代设计实现。   该系列主要有ARM1136J,ARM1156T2和ARM1176JZ三个内核型号,分别针对不同应用领域。   本文将对全新的ARMv6架构进行介绍,并深入分析ARM11处理器的先进特点和关键技术。 ARMv6结构体系   实现新一代微处理器的第一步就是订立一个新的结构体系。这里所说的结构体系只是对处理器行为进行描述,并不包括具体地指定处理器是如何被建造的。结构体系的定义提供了处理器和外界(操作系统,应用程序和调试支持)的接口,从细节上说,处理器结构体系定义了指令集、编程模式和最近的存储器之间的接
[其他]
新一代RISC微处理器<font color='red'>ARM</font>11的特点及关键技术
最小化ARM Cortex-M CPU功耗的方法
1理解Thumb-2 首先,让我们从一个看起来并不明显的起点开始讨论节能技术—指令集。所有Cortex-MCPU都使用Thumb-2指令集,它融合了32位ARM指令集和16位Thumb指令集,并且为原始性能和整体代码大小提供了灵活的解决方案。在Cortex-M内核上一个典型的Thumb-2应用程序与完全采用ARM指令完成的相同功能应用程序相比,代码大小减小到25%之内,而执行效率达到90%(当针对运行时间进行优化后)。 Thumb-2中包含了许多功能强大的指令,能够有效减少基础运算所需的时钟周期数。减少时钟周期数意味着现在你能够以更少的CPU功耗完成手头的工作。例如,假设要完成一个16位乘法运算(如图1所示)。在一个8位805
[单片机]
最小化<font color='red'>ARM</font> Cortex-M CPU功耗的方法
arm异常与中断
1 swi中断的处理步骤: 1) 进中断时pc- lr, cpsr- spsr, cpsr_mode置为特权模式,均由硬件完成。 2)注册中断向量表由软件完成,可以用B指令,也可以用ldr跟dcd表的方式,在中断向量处放置一条跳转指令,跳到中断处理handler处。 3)一级中断处理程序主要目的是根据arm或者thumb状态获取swi号,期间注意保存寄存器和返回。 4)二级中断处理程序可以用C或者汇编,主要是一个分支结构,根据中断号做相应的事,可以用函数指针方式实现。 -----应用程序中使用软中断时,可以使用__swi (仅armcc)关键字声明软中断函数,调用时自动获取中断号。 2 基于s3c2410的irq中断 先上
[单片机]
<font color='red'>arm</font>异常与中断
Arm架构Arm内核解析
 Arm 架构已经主导了当今嵌入式处理和计算市场,但在过去的几十年里,Arm 架构却走过了漫长的道路。从20世纪80年代开始,它起初是作为家用电脑处理器,然后在20世纪90年代成为手机芯片的基础。如今,在几乎所有技术细分市场,Arm都是一个强有力的竞争者。许多人认为,Arm 架构已成为 32 位或 64 位处理器的首选。由于这种广泛应用,现在已经有成千上万种基于Arm架构的变体。了解这些内核彼此之间的不同是做出选择决策的重要一环。   早在 2004 年,最初的 Cortex 家族就使 Arm架构分化为三个内核产品组,每个产品组都针对不同类型的应用。最早集成到芯片的是Cortex-M,它已成为基于Arm微控制器(MCU)生态系
[单片机]
<font color='red'>Arm</font><font color='red'>架构</font>之<font color='red'>Arm</font>内核解析
传拟收购Arm
知情人士称,除了全球最大的芯片代工制造商台积电,以及全球最大的电子代工厂商富士康,软银还接触了苹果公司、高通和NV等。 富士康 (2317)公布7月营收4,033.26亿元,重回4千亿元水准,月增11.87%,年增1.34%,创历年同期新高,亦为今(2020)年以来新高,显示营运已逐步摆脱新冠肺炎疫情冲击;累计今年前7月合并营收为2兆4,614.43亿元,年减5.9%,降幅逐渐缩小。 富士康董事长刘扬伟曾表示,第三季初步看来比预期好。而鸿海将于下周三(12日)召开法说会,届时可望进一步释出对下半年产业看法及营运展望。业界则预估,第三季为传统旺季,随着苹果等客户将陆续发布新机,富士康营运可望一路升温至年底。 富士康指出,就7月四大类
[机器人]
arm9(TQ2440)移植小结---环境搭建
从拿到板子开始移植至今已有一个月了,现在回头小结一下,以备后用吧。 第一阶段:搭建环境(vmware + redhat linux 9) 1.安装虚拟机没有什么问题。下面是在虚拟机上安装linux的过程: 虚拟机的设置按照默认也差不多了,内存给了256M,硬盘给了8G,从后面的使用来看, 硬盘还是越大越好,这个东东随时间的增长越来越大。 linux安装完成后就开始安装虚拟机工具(vmware Tools),这个东西安装的很不顺利, 具体方法前面一篇转载的已经说得很完整了,但是至今有个问题没有解决----安装并没有完全成功。 从效果来看,一个是分
[单片机]
<font color='red'>arm</font>9(TQ2440)移植小结---环境搭建
九、ARM 汇编与 C 的混合编程
9.1 ARM 汇编与 C 的混合编程 9.1.1 内嵌汇编 __asm __asm( 指令 ) 例如关闭/打开总中断开关 CPSR __asm //使用 C 中变量名代替寄存器 { MOV var,x ADD y,var,x/y } 内联汇编语言中的寄存器名被编译器视为 C 或 C++语言中的变量,所以内联汇编中出现的寄存器名不一定和同名的物理寄存器相对应。 这些寄存器名在使用前必须声明, 否则编译器将提示警告信息 9.1.2 汇编访问 C 中的全局变量 【1】用 IMPORT 声明全局变量 【2】利用 LDR 得到其地址 AREA globals, CODE, READONLY EXPORT asma
[单片机]
九、<font color='red'>ARM</font> 汇编与 C 的混合编程
基于ARM处理器的IAP功能实现配变监测终端程序远程更新的
1 LPC2378芯片介绍 LPC2378是一款基于ARM7TDMI-S的32位处理器。它具有512 KB的片内Flash程序存储器、32 KB的静态RAM(SRAM),以及在系统编程(In-System Programming,ISP)和在应用编程(In-Application Program-ming,IAP)功能。由于程序对内存需求比较大,所以外扩了一片64 KB的SRAM。 通常,程序的下载可通过3种方式实现: ①采用嵌入式实时操作系统。该方法加大了系统对存储容量的要求,增加了硬件和软件成本。 ②采用增加外控制烧录系统的方法。该方法同样增加了系统的复杂度和成本,且降低了系统本身的可靠性。 ③采用IAP技术。该方法充分利用芯片
[单片机]
基于<font color='red'>ARM</font>处理器的IAP功能实现配变监测终端程序远程更新的
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved