⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.s

📁 学习ARM中断最好的例程
💻 S
字号:
;************************************************************************************************
;Chinese Academy of Sciences, Institute of Automation
;File Name:		Init.s
;Description:		Timer interrupt test. Model Init must link to SDRAM address 0x0.
;Author:			Li JuGuang
;Date:			2003-4-3
;SDRAM Configuration:	Use ljg.txt,SDRAM remap to address 0x0~0x100,0000(16MB) 
;************************************************************************************************	
	GET	mem.s
	GET	casia1.s
	IMPORT Main
	IMPORT IRQHandler
	CODE32
	AREA    Init,CODE,READONLY
	ENTRY 
	

	B       Reset_Handler		
    B       .
    B       .
    B       .
    B       .
	NOP 
    B       IRQ_Handler
    B       .


Reset_Handler
;*******************************************************
;Disable all interrupt
;*******************************************************
	MRS	R0,CPSR
	BIC	R0,R0,#MODE_MASK
	ORR	R0,R0,#SUP_MODE
	ORR	R0,R0,#IBit
	ORR	R0,R0,#FBit 
	MSR	CPSR_cf,R0
	
;******************************************************
;Initialise system stack for different processor modes
;******************************************************
	MRS	r0, cpsr
	BIC	r0, r0, #LOCKOUT | MODE_MASK
	ORR	r2, r0, #USR_MODE	
	ORR	r1, r0, #LOCKOUT | FIQ_MODE

	MSR	cpsr_c, r1					;/* change to FIQ MODE */
	MSR	spsr_c, r2 					;/* set the SPSR under FIQ */
	LDR	sp, =FIQ_STACK				;/* set SP (R13) under FIQ */

	ORR	r1, r0, #LOCKOUT | IRQ_MODE
	MSR	cpsr_c, r1					;/* change to IRQ MODE */
	MSR	spsr_c, r2					;/* set the SPSR under IRQ */
	LDR	sp, =IRQ_STACK				;/* set SP (R13) under IRQ */

	ORR	r1, r0, #LOCKOUT | ABT_MODE
	MSR	cpsr_c, r1					;/* change to ABORT MODE */
	MSR	spsr_c, r2					;/* set the SPSR under ABORT */
	LDR	sp, =ABT_STACK				;/* set SP (R13) under ABORT */

	ORR	r1, r0, #LOCKOUT | UDF_MODE
	MSR	cpsr_c, r1					;/* change to Undefine MODE */
	MSR	spsr_c, r2					;/* set the SPSR under Undefine */
	LDR	sp, =UDF_STACK				;/* set SP (R13) under Undefine */

	ORR	r1, r0, #LOCKOUT | SUP_MODE
	MSR	cpsr_c, r1					;/* change to Superuser MODE */
	MSR	spsr_c, r2					;/* set the SPSR under super */ 
	LDR	sp, =SUP_STACK			

	MRS	r0, cpsr					;/*用户模式的SP最后设置,进入用户模式后不能通过改变CPSR的模式位回到其他模式*/
	BIC	r0, r0, #LOCKOUT | MODE_MASK
	ORR	r1, r0, #USR_MODE	
	MSR	CPSR_cf,R0
	LDR	SP, =USR_STACK

**********************************************************
 	B	Main
**********************************************************

IRQ_Handler
	STMFD	SP!,{R0-R6,LR}

	BL		IRQHandler

	LDMFD	SP!,{R0-R6,LR}
	SUBS	PC,LR,#4
	
	END
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -