上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中断是否打开的。 这几个寄存器如下:
1. 程序状态寄存器(CPSR).
这个寄存器里有两位可以控制是否响应FIQ或IRQ中断的设置。如果把这两位全部置1,就全部不响应中断了。后面会用到这两位来关中断的,在RTOS里就需要使用到这两位关中断作为临界区。
2. 中断控制寄存器(INTCON)
这个寄存器只使用到低3位:0,1,2。
第0位设置为1时,不使用FIQ的中断;设置为0时,就是使用FIQ的中断。
第1位设置为1时,不使用IRQ的中断;设置为0时,就是使用IRQ的中断。
第2位设置为1时,使用非向量的方式IRQ中断,设置为0时使用向量方式IRQ中断。
3. 中断模式寄存器(INTMOD)
这个寄存器设置26个中断源使用中断的方式。当相应位设置为0时,就表示使用IRQ中断方式,当相应位设置为1时,就表示使用FIQ的中断方式。
4. 中断屏蔽寄存器(INTMSK)
这个寄存器是用来指定那位可以响应中断的。其中第26位比较特别的,它是全局中断屏蔽位。如果设置它为1,就全部中断都不响应了。0到25位就是26个中断源的屏蔽位,如果设置为1,就表示不响应中断,设置为0就表示响应中断。
5. 清除中断位寄存器(I_ISPC)
当中断发生之后,还想再次发生中断。那么就需要清除相应的中断位,这时就使用I_ISPC中断寄存器。
当设置这个寄存器相应位为1时,就清除了相应的中断位,下一个中断到来时,就可以再次响应了。
通过设置上面几个中断寄存器,就可以让S3C44B0的中断工作了。中断是非常重要的,一定要熟练地使用。不管什么样的CPU,都是使用这样的东西。中断是现代高速CPU与低速设备之间对话的机制,没有这个机制,就根本不能让高速的CPU高效地工作了。
关键字:ARM开发 中断 处理过程
引用地址:
学习ARM开发(18)
推荐阅读最新更新时间:2024-11-14 11:31
stm8中断打印调试信息的宏定义
在中断服务函数中调用了一个奇怪的函数irq_print() ... INTERRUPT_HANDLER(RTC_CSSLSE_IRQHandler, 4) { g_rtc_report = 1; //定时器唤醒标志制1, 进入4号中断 RTC_WakeUpCmd(ENABLE); // 唤醒使能 irq_print( RTC interrupt reportn ); //打印由RTC唤醒成功调试信息 RTC_ClearITPendingBit(RTC_IT_WUT); //清除中断标志位 } ... 在预处理发现了它的定义,这是调试信息的宏定义 .... #include
[单片机]
ARM、飞思卡尔和IBM联手推出物联网开发套件
日前,ARM联合飞思卡尔及IBM,共同开发了一套专供物联网的开发套件。套件基于mbed开发平台,提供开发板、软件和控制板的全套产品,软件包括了完整的IBM Bluemix云平台,提供包括数据存储、网页寄存、分析以及移动资源等。 ARM物联网市场部副总裁Zach Shelby表示: 这款产品非常适合入门级学习,它为云连接的物联网提供了一个交钥匙方案,让初学者尽快的尝试物联网的创意,开发者应该专注于应用程序而不是繁琐的网络连接问题。 当该套件连网后,会自动连接其专属页面,并开始上传传感器数据。 开发板采用的是飞思卡尔Freedom系列开发板,此外有一个包含一个操纵杆,两个分压器、一个三轴加速度计和一个温度传感器的
[物联网]
MSP430-中断的使用
因为MSP430的操作是在寄存器上进行直接操作的,所以学习起来有一点繁琐,不像32,他有自己分装好的库可以提供大家使用,介绍中断,那就要了解下中断有关的寄存器: 这里写按键中断作为测试程序: #ifndef __CLOCK_H #define __CLOCK_H #define uchar unsigned char #define uint unsigned int void Int_Clk(void); #endif #include msp430f149.h #include clock.h /*****************************************************
[单片机]
51单片机之——中断的概念
前面讲了许多51单片机的外设部分,大致有一些芯片,以及元器件。而这篇博文就走进单片机内设——中断系统。 首先,搞清楚什么是中断? 引用资料书的话:对于单片机而言,中断是指CPU在处理某一件事A时,发生了另一件事B,请求CPU迅速去处理(这个过程是“中断发生”);此时,CPU暂时停止当前的A事件(这个过程是“中断响应”),转去处理B事件(这个过程是“中断服务”);待CPU将B事件处理完毕后,再回到事件A被中断打断的地方继续处理事件A(这个过程是“中断返回”)。这一过程,称之为中断。其流程图如下所示: 其中,主程序为上述所说的A事件,中断请求由B事件发出。 再来引出一个生活中的例子: 首先,我们会知道有一个重要的人会在中午正餐的时
[单片机]
STM32学习笔记之EXTI(外部中断)
一:EXTI(外部中断)说明 =========================================分割线========================================= 外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。每个输入线可以独立地配置 输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以被独 立的屏蔽。挂起寄存器保持着状态线的中断要求。 =========================================分割线========================================= 19个中断如下:
[单片机]
ARM9 S3C2440—中断和定时器的初始化配置
ARM9 S3C2440的寄存器特别多,这也是它和单片机不同处之一,对ARM的编程主要也是对寄存器的操作,可是寄存器多了以后,就很容易忘记对某个寄存器的设置,如果能够总结一下寄存器配置的步骤,使得其有章可循,那么应用的时候就可以对号入座了。如果长时间不去使用ARM的话,再次使用的时候重新翻看烦人的芯片用户手册,显得就浪费时间了,这样,趁着熟悉的时候记录下这些要点,以后稍加翻看就能唤起记忆,这也是自己写这些博客的缘由。 定时器初始化配置步骤主要有: 1、rTCFG0和rTCFG1的设置 首先要设置定时器的时钟频率, Timer input clock Frequency= PCLK / {prescaler va
[单片机]
NVIC中断优先级管理
一,STM32中断介绍 CM3内核支持256个中断,16个内核中断和240个外部中断,具有256级可编程中断设置 STM32只使用了CM3内核的一部分,84个中断:16个内核中断+68个可屏蔽中断(外部中断),具有16级可编程的中断优先级 STM32F103系列只有60个可屏蔽中断(F107系列有68个) 二,中断管理 STM32有如此多的中断,那么是如何进行管理的 中断优先级分组: SCB- AIRCR 3位寄存器 : 配置分组,确定中断具有几位抢占优先级和几位响应优先级 每一个中断都具有一个 4位IP寄存器,通过这4个位来设置抢占和响应优先级, 16级可编程中断优先级(2的4次方=16) 配置
[单片机]
STM32学习笔记:外部中断的使用
中断对于开发嵌入式系统来讲的地位绝对是毋庸置疑的,在C51单片机时代,一共只有5个中断,其中2个外部中断,2个定时/计数器中断和一个串口中断,但是在STM32中,中断数量大大增加,而且中断的设置也更加复杂。今天就将来探讨一下关于STM32中的中断系统。 1 基本概念 ARM Coetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。STM32目前支持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使用中断优先级设置8bit中的高4位。 STM32可支持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备自己的中断优先级控制字节PRI
[单片机]