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

📄 init.s

📁 AT91RM9200 ADS下C语言编写的串口程序。可以双向收发数据。
💻 S
字号:
PIOA_PDR	EQU		0xFFFFF404
PIOA_ASR	EQU	    0xFFFFF470
CKGR_PLLBR  EQU     0xFFFFFC2C
PMC_SR      EQU     0xFFFFFC68

Mode_USR        EQU     0x10
Mode_FIQ        EQU     0x11
Mode_IRQ        EQU     0x12
Mode_SVC        EQU     0x13
Mode_ABT        EQU     0x17
Mode_UND        EQU     0x1B
Mode_SYS        EQU     0x1F

I_Bit           EQU     0x80            ; when I bit is set, IRQ is disabled
F_Bit           EQU     0x40            ; when F bit is set, FIQ is disabled

UND_Stack_Size  EQU     0x00000010
SVC_Stack_Size  EQU     0x00000010
ABT_Stack_Size  EQU     0x00000010
FIQ_Stack_Size  EQU     0x00000010
IRQ_Stack_Size  EQU     0x00000080
USR_Stack_Size  EQU     0x00000400

	AREA	Init,CODE,READONLY
	ENTRY
Vectors
	LDR     PC,Reset_Addr
    LDR     PC,Undef_Addr
    LDR     PC,SWI_Addr
    LDR     PC,PAbt_Addr
    LDR     PC,DAbt_Addr
    NOP                     ; Reserved Vector
	LDR     PC,[PC,#-&F20]
	;//LDR     PC,IRQ_Addr     
    LDR     PC,FIQ_Addr

Reset_Addr      DCD     Reset_Handler
Undef_Addr      DCD     Undef_Handler
SWI_Addr        DCD     SWI_Handler
PAbt_Addr       DCD     PAbt_Handler
DAbt_Addr       DCD     DAbt_Handler
                DCD     0               ; Reserved Address
IRQ_Addr        DCD     IRQ_Handler
FIQ_Addr        DCD     FIQ_Handler

Undef_Handler   B       Undef_Handler
SWI_Handler     B       SWI_Handler
PAbt_Handler    B       PAbt_Handler
DAbt_Handler    B       DAbt_Handler
IRQ_Handler     B       IRQ_Handler
FIQ_Handler     B       FIQ_Handler

Reset_Handler
;enable DBUG	
	LDR     R1, =&C0000000
	LDR     R0, =PIOA_PDR
    STR     R1, [R0]
    LDR     R1, =&C0000000
	LDR     R0, =PIOA_ASR
    STR     R1, [R0]

;set PLLB
	LDR     R0, =CKGR_PLLBR
	LDR     R1, =&10193F05
	STR     R1, [R0]
PLLB_WAIT
	LDR     R0, =PMC_SR
	LDR     R1, [R0]
	TST     R1,	 #4
	BEQ		PLLB_WAIT
MCK_WAIT
	LDR     R0, =PMC_SR
	LDR     R1, [R0]
	TST     R1,	 #8
	BEQ		MCK_WAIT

;//Setup Stack for each mode
	LDR     R0, =&204000
;//Enter Undefined Instruction Mode and set its Stack Pointer
	MSR     CPSR_c, #Mode_UND:OR:I_Bit:OR:F_Bit
	MOV     SP, R0
	SUB     R0, R0, #UND_Stack_Size
;//Enter Abort Mode and set its Stack Pointer
	MSR     CPSR_c, #Mode_ABT:OR:I_Bit:OR:F_Bit
	MOV     SP, R0
	SUB     R0, R0, #ABT_Stack_Size
;//Enter FIQ Mode and set its Stack Pointer
	MSR     CPSR_c, #Mode_FIQ:OR:I_Bit:OR:F_Bit
	MOV     SP, R0
	SUB     R0, R0, #FIQ_Stack_Size
;//Enter IRQ Mode and set its Stack Pointer
	MSR     CPSR_c, #Mode_IRQ:OR:I_Bit:OR:F_Bit
	MOV     SP, R0
	SUB     R0, R0, #IRQ_Stack_Size
;//Enter Supervisor Mode and set its Stack Pointer
	MSR     CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit
	MOV     SP, R0
	SUB     R0, R0, #SVC_Stack_Size
;//Enter User Mode and set its Stack Pointer
	MSR     CPSR_c, #Mode_USR
    MOV     SP, R0

   	IMPORT	Main 
	B   Main
	END

⌨️ 快捷键说明

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