北理工嵌入式系统实验报告 - 图文 联系客服

发布时间 : 星期一 文章北理工嵌入式系统实验报告 - 图文更新完毕开始阅读efecd8962cc58bd63186bddc

图 2-3-1

下边分析一下主程序的源码。

在 C 程序前的部分为系统的初始化,这在后边BOOTLOADER 的章节里,要详细介 绍。

#include \嵌入包括硬件的头文件 unsigned char data; //定义全局变量 void Main(void) {

Target_Init(); //目标板初始化,定义串口的硬件初始化在 //target.c 中定义 Delay(10); //延时

data = 0x55; //给全局变量赋值 while(1)

EL - ARM - 830 实验指导书 47 {

Uart_Printf(\串口0 输出 Delay(10); } }

把data = 0x55;语句中的0x55,换成其他8 位数,重新编译,下载,看看串口工 具上输出是什么内容。 六、实验总结

由于该实验的例程存在问题,故和大家一样无法做出实验结果,尽管没有结果,但试验的时候我详细阅读了指导书相关内容,故对ARMC有了一个比较深入的了解,提高了自己对ARM的认识。

6

实验四 ARM的中断实验

一、实验目的

1. 掌握ARM9 的中断原理,能够对S3C2410 的中断资源及其相关中断寄存器的进行合 理配置

2. 掌握对S3C2410 的中断的编程的方法 二、实验内容

1. 学习响应外部中断请求的配置方法,并通过响应定时器中断,执行中断服务子程 序使CPU 板上的LED 指示灯LED1、LED2 闪烁。 三、实验设备

1. EL-ARM-830 教学实验箱,PentiumII 以上的PC 机,仿真调试电缆。 2. PC 操作系统WIN98 或WIN2000 或WINXP,ADS1.2 集成开发环境, 仿真调试驱动程序 四、ARM的中断原理

在ARM 中,有两类中断,一类是IRQ,一类是FIQ,IRQ 是普通中断,FIQ 是快 速中断,在进行大批量的复制、数据转移等工作时,常使用此类中断。FIQ 的优先 级高于IRQ。同时,它们都属于ARM 的异常模式,当一旦有中断发生,不管是外部 中断,还是内部中断,正在执行的程序都会停下,PC 指针进而跳入异常向量的地址 处,若是IRQ 中断,则PC 指针跳到0x18 处,若是FIQ 中断,则跳到0x1C 处。异 常向量地址处,一般存有中断服务子程序的地址,所以,接下来PC 指针跳入中断 服务子程序中。当完成中断服务子程序后,PC 指针会返回到被打断的程序的下一条 地址处,继续执行程序。这就是ARM 中断操作的基本原理。

但是,通常由于生产ARM 处理器的各厂家都集成了很多中断请求源,比如,串

口中断、AD 中断、外部中断、定时器中断、DMA 中断等等,所以,很多中断可能同 时请求中断,因此,为区分它们,更准确的完成任务,这些中断都有相应的优先级 别,以及当发生中断时,它们都有相应的中断标志位,通过在发生中断是判断中断 优先级,和访问中断标志位的状态来识别到底哪一个中断发生了。 五、三星的2410 ARM处理器的中断的使用

首先,ARM920T CPU 的PSR 寄存器中的F 位为1,则CPU 不会响应中断控制器

的FIQ 中断,同样,ARM920T CPU 的PSR 寄存器中的I 位为1,则CPU 也不会响应 EL - ARM - 830 实验指导书 60

中断控制器的IRQ 中断,为使CPU 响应中断,须在启动代码中将其设为0,以及使 INTMSK 寄存器中的相应位置0。

S3C2410 共有56 个中断源,有26 个中断控制器,外部中断EXTIN8~23 共用一

个中断控制器,外部中断EXTIN4~7 共用一个中断控制器,9 个UART 中断分成3 组, 共用3 个中断控制器,ADC 和触摸屏共用一个中断控制器。见表2-6-2 中断的优先级是由主组号和从ID 号的级别控制的。 中断优先级产生模块如下图所示:

7

图 2-6-1

从上图可以看出,中断优先级产生模块共有7 个判优器,每个判优器是否使能

由寄存器PRIORITY[6:0]决定,每个判优器下面有4~6 个中断源,这些中断源对应着 REQ0~REQ5 这6 个优先级,这些优先级由寄存器PRIORITY[20:7]的相应位决定。 要正确使用S3C2410 的中断控制器,必须设置如下的寄存器,如下表2-6-1 所示: EL - ARM - 830 实验指导书 61

SRCPND 0x4a000000 R/W 中断源挂起寄存器,当中断产生后,相应位置 位

INTMOD 0x4a000004 R/W 中断模式寄存器,设定IRQ 或FIQ 模式

INTMSK 0x4a000008 R/W 中断屏蔽寄存器,如果相应位置位则该中断被 屏蔽

PRIORITY 0x4a00000c R/W 中断优先级控制寄存器,设置中断优先级 INTPND 0x4a000010 R/W 中断挂起寄存器,相应位对应正在执行的中断 服务

INTOFFSET 0x4a000014 R 中断源请求偏移寄存器 SUBSRCPND 0x4a000018 R/W 子中断源挂起寄存器 INTSUBMSK 0x4a00001c R/W 子中断屏蔽寄存器

中断挂起寄存器主要是提供哪个中断有请求的标志寄存器,相应位置1,则说明有该 中断请求产生。若相应位为0,则无该中断请求产生。

8

中断模式寄存器主要是配置该中断是IRQ型中断,还是FIQ型中断。

中断屏蔽寄存器的主要功能是屏蔽相应中断的请求,即使中断挂起寄存器的相应位已

经置1,若中断屏蔽寄存器相应位置1,则中断控制器屏蔽该中断请求,也无法让CPU响应 该中断。

INTPND 为向量IRQ 中断服务挂起状态寄存器,当向量IRQ 中断发生时,该寄存器内只 有一位被设置,即只有当前要服务的中断标志位置位。通过读它的值,就能判断出哪个中 断发生了。在INTPND 中相应位写入数据,就能清除掉中断挂起寄存器中的中断请求标志 位,以使CPU 不再响应中断,其实,CPU 响应中断是看中断挂起寄存器中的请求标志位有

没有置位,若置位,又屏蔽位打开,ARM920T 的PSR 的F 或I 为也打开,那么,CPU 就响

应中断,否则,有一个条件不成立,则CPU 无法响应中断。 EL - ARM - 830 实验指导书 62

六、中断编程实例

在ADS1.2 的开发环境下,打开HARDWARE/ADS/实验六目录下的Interrupt.mcp

9