嵌入式实验 中断实验报告
- 格式:doc
- 大小:56.50 KB
- 文档页数:9
嵌入式实验报告
中断实验报告
指导教师:高金山
实验者: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