嵌入式实验 中断实验报告

  • 格式:doc
  • 大小:56.50 KB
  • 文档页数:9

下载文档原格式

  / 9
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式实验报告

中断实验报告

指导教师:高金山

实验者:13410801 房皓13410802 张耀荣

一、实验目的:

1.理解中断向量表的结构

2.理解中断处理的过程

3.学习编写中断处理程序的方法

二、实验要求:

1.修改源程序,通过中断方式响应按键,当1-16键按下时,数码管显示0-F。

2.提高内容:

以FIQ方式,替代IRQ方式,实现按下任何一个键,数码管显示按键号的功能。

三、实验内容:

1.设计主程序,使8个LED以一定的时间间隔从右到左依次点亮,循环显示;(实验

一的内容)

2.当有键按下时,在七段数码管上,显示对应的16个键盘编码值 0-9 a-f(实验二、

三的内容)

四、程序编辑:

;boot.s

IMPORT postDelay

IMPORT osStack

;IMPORT post_initStack

IMPORT init_Stack

IMPORT post_initGpio

IMPORT post_initMem

IMPORT post_initKey

IMPORT dummyOs

IMPORT FIQ_Handler

IMPORT ICMR

IMPORT init_ICMR

IMPORT FIQ

IMPORT init_FIQ

;IMPORT PSSR

AREA boot ,CODE ,READONLY

ENTRY

B Reset_Handler

B Undefined_Handler

B SWI_Handler

B Prefetch_Handler

B DataAbort_Handler

NOP

B Reset_Handler

B FIQ_Handler

Undefined_Handler

B Undefined_Handler

SWI_Handler

B SWI_Handler

Prefetch_Handler

B Prefetch_Handler

DataAbort_Handler

B DataAbort_Handler

IRQ_Handler

B IRQ_Handler ;Defined by yourself Reset_Handler

;*************************

;Check if run in the SDRAM

;*************************

MOV R0,PC

CMP R0,#0x0000003C

BNE Stack

;**************************

;Init Memory

;**************************

mov r14,pc

;ldr pc,=init_Memory

ldr pc,=post_initMem

;**************************

;Init Stack

;************************** Stack

mov r14,pc

ldr pc,=init_Stack

;ldr pc,=post_initStack

;**************************

;Init Gpio

;**************************

mov r14, pc

ldr pc, =post_initGpio

;***************************

;Enable & Set Interrupt

;***************************

mrs r1, CPSR

bic r1, r1,#0x40

msr CPSR_c, r1

ldr r1, =ICMR

ldr r2, =init_ICMR

str r2,[r1]

ldr r1, =FIQ

ldr r2, =init_FIQ

str r2, [r1]

;****************************

;Init Keypad

;****************************

mov r14,pc

ldr pc,=post_initKey

;***************************

;Power Manager Sleep Status Register

;***************************

;ldr r1, =PSSR

;mov r2, #0x30

;str r2, [r1]

;***************************

;Loop

;***************************

ldr r0,=postDelay

postLoop

sub r0,r0,#0x1

cmp r0,#0x0

bne postLoop

ldr pc,=dummyOs

END

;handler_IRQ.s

IMPORT IRQ_Function

;IMPORT ICMR

EXPORT FIQ_Handler

AREA FIQ_Handler,CODE,READONLY

;****************************

SUB LR, LR, #0x4

STMFD SP!,{R0-R12,LR}

BL IRQ_Function

LDR R0,=0x41500000; by gao

LDR R1,[R0] ;by gao

LDMFD SP!,{R0-R12,PC}^

;*******************************

END

;keypad.c

#include

#include "register_variant.h"

#define LED_CS2 (*((volatile unsigned short int *)(0x10300000))) //LED1 and LED2