📄 init.lst
字号:
ARM COMPILER V2.54a, Init 19/08/06 17:44:59 PAGE 1
ARM COMPILER V2.54a, COMPILATION OF MODULE Init
OBJECT MODULE PLACED IN Init.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe Init.c ARM OPTIMIZE(2,SPEED) BROWSE DEBUG TABS(4)
stmt level source
1 #include "at91sam7a3.h"
2
3 void power_on_initialization();
4 void Initial_USART();
5
6 void power_on_initialization()
7 {
8 1 AT91S_SYS *paddr;
9 1
10 1 paddr = 0xFFFFF000;
11 1 paddr->AIC_IECR = 0x0000001C;
12 1 paddr->AIC_SMR[2] = 0x00000065; //中断源模式寄存器
13 1 paddr->AIC_SMR[3] = 0x00000064;
14 1 paddr->AIC_SMR[4] = 0x00000064;
15 1
16 1 paddr->AIC_IECR = 0x0000001C; //中断源使能寄存器
17 1 Initial_USART();
18 1
19 1 //USART设置
20 1
21 1
22 1 //向量中断设置
23 1 //VICIntSelect = 0x00000000;
24 1
25 1 //VICVectCntl0 = 0x00000000;
26 1 //VICVectCntl2 = 0x00000000;
27 1 //VICVectCntl3 = 0x00000000;
28 1 //VICVectCntl4 = 0x00000000;
29 1 //VICVectCntl5 = 0x0000002B; //SPI1
30 1 //VICVectCntl6 = 0x0000002E; //0x00000000; //EINT0
31 1 //VICVectCntl7 = 0x00000024; //TIME0
32 1 //VICVectCntl8 = 0x00000026; //UART0
33 1 //VICVectCntl9 = 0x00000000;
34 1 //VICVectCntl10 = 0x00000000;
35 1 //VICVectCntl11 = 0x00000000;
36 1 //VICVectCntl12 = 0x00000000;
37 1 //VICVectCntl13 = 0x00000000;
38 1 //VICVectCntl14 = 0x00000000;
39 1 //VICVectCntl15 = 0x00000000;
40 1
41 1 //VICVectAddr0 = 0x00000000;
42 1 //VICVectAddr2 = 0x00000000;
43 1 //VICVectAddr3 = 0x00000000;
44 1 //VICVectAddr4 = 0x00000000;
45 1 //VICVectAddr5 = 0x00000000; //(unsigned long) SPI1__irq; //SPI1
46 1 //VICVectAddr6 = (unsigned long) EINT0__irq; //EINT0//0x00000000;
47 1 //VICVectAddr7 = (unsigned long) timer0__irq; //TIME0
48 1 //VICVectAddr8 = (unsigned long) UART0__irq; //UART0
49 1 //VICVectAddr10 = 0x00000000;
50 1 //VICVectAddr11 = 0x00000000;
51 1 //VICVectAddr12 = 0x00000000;
52 1 //VICVectAddr13 = 0x00000000;
53 1 //VICVectAddr14 = 0x00000000;
54 1 //VICVectAddr15 = 0x00000000;
55 1
56 1 //VICDefVectAddr = 0x00000000;
57 1 //VICIntEnable = 0x00004850;//0x00004050;
58 1
59 1 //PIO
ARM COMPILER V2.54a, Init 19/08/06 17:44:59 PAGE 2
60 1 //PIO_PER = 0x0000071C; //
61 1 //PIO_PDR = 0xFFFFF8E3; //
62 1
63 1
64 1 //USART0设置
65 1 //U0IER = 0x03 ;
66 1 //U0FCR = 0x01 ;
67 1 //U0LCR = 0x83 ;
68 1 //U0DLL = 0x9 ;
69 1 //U0DLM = 0x00 ;
70 1 //U0LCR = 0x03 ;
71 1
72 1 //USART1设置
73 1 //U0IER = 0x03 ;
74 1 //U0FCR = 0x01 ;
75 1 //U0LCR = 0x83 ;
76 1 //U0DLL = 0x9 ;
77 1 //U0DLM = 0x00 ;
78 1 //U0LCR = 0x03 ;
79 1
80 1 //USART2设置
81 1 //U0IER = 0x03 ;
82 1 //U0FCR = 0x01 ;
83 1 //U0LCR = 0x83 ;
84 1 //U0DLL = 0x9 ;
85 1 //U0DLM = 0x00 ;
86 1 //U0LCR = 0x03 ;
87 1
88 1 //标志设置
89 1 }
90
91 void Initial_USART()
92 {
93 1 AT91S_USART *pIntial_US0,*pIntial_US1,*pIntial_US2;
94 1
95 1 pIntial_US0 = 0xFFFC0000;
96 1 pIntial_US1 = 0xFFFC4000;
97 1 pIntial_US2 = 0xFFFC8000;
98 1
99 1 pIntial_US0->US_CR = 0x0000115C; // (US0) Control Register
100 1 pIntial_US0->US_MR = 0x00010CD0; // (US0) Mode Register
101 1 pIntial_US0->US_IER = 0x00001803; // (US0) Interrupt Enable Register
102 1 pIntial_US0->US_IDR = 0x00000000; // (US0) Interrupt Disable Register
103 1 pIntial_US0->US_THR = 0x0; // (US0) Transmitter Holding Register
104 1 pIntial_US0->US_BRGR = 0x0; // (US0) Baud Rate Generator Register
105 1 pIntial_US0->US_RTOR = 0x0; // (US0) Receiver Time-out Register
106 1 pIntial_US0->US_TTGR = 0x0; // (US0) Transmitter Time-guard Register
107 1
108 1 pIntial_US1->US_CR = 0x0000115C;
109 1
110 1
111 1 }
ARM COMPILER V2.54a, Init 19/08/06 17:44:59 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** PUBLICS:
PUBLIC power_on_initialization?A
PUBLIC Initial_USART?A
*** CODE SEGMENT '?PR?power_on_initialization?A?Init':
6: void power_on_initialization()
00000000 E92D4000 STMDB R13!,{LR}
7: {
00000004 ; SCOPE-START
10: paddr = 0xFFFFF000;
00000004 E5102000 LDR R2,=0xFFFFF000
00000008 ---- Variable 'paddr' assigned to Register 'R2' ----
11: paddr->AIC_IECR = 0x0000001C;
00000008 E3A0001C MOV R0,#0x1C
0000000C E1A01002 MOV R1,R2 ; paddr
00000010 E5810120 STR R0,[R1,#0x120]
12: paddr->AIC_SMR[2] = 0x00000065; //中断源模式寄存器
00000014 E3A00065 MOV R0,#0x65
00000018 E1A01002 MOV R1,R2 ; paddr
0000001C E5810008 STR R0,[R1,#0x8]
13: paddr->AIC_SMR[3] = 0x00000064;
00000020 E3A00064 MOV R0,#0x64
00000024 E1A01002 MOV R1,R2 ; paddr
00000028 E581000C STR R0,[R1,#0xC]
14: paddr->AIC_SMR[4] = 0x00000064;
0000002C E3A00064 MOV R0,#0x64
00000030 E1A01002 MOV R1,R2 ; paddr
00000034 E5810010 STR R0,[R1,#0x10]
16: paddr->AIC_IECR = 0x0000001C; //中断源使能寄存器
00000038 E3A0001C MOV R0,#0x1C
0000003C E1A01002 MOV R1,R2 ; paddr
00000040 E5810120 STR R0,[R1,#0x120]
17: Initial_USART();
00000044 EBFFFFED BL Initial_USART?A ; Targ=0x0
00000048 ; SCOPE-END
89: }
00000048 E8BD0008 LDMIA R13!,{R3}
0000004C E12FFF13 BX R3
00000050 ENDP ; 'power_on_initialization?A'
*** CODE SEGMENT '?PR?Initial_USART?A?Init':
91: void Initial_USART()
00000000 E24DD004 SUB R13,R13,#0x0004
92: {
00000004 ; SCOPE-START
95: pIntial_US0 = 0xFFFC0000;
00000004 E5103000 LDR R3,=0xFFFC0000
00000008 ---- Variable 'pIntial_US0' assigned to Register 'R3' ----
96: pIntial_US1 = 0xFFFC4000;
00000008 E5102000 LDR R2,=0xFFFC4000
0000000C ---- Variable 'pIntial_US1' assigned to Register 'R2' ----
99: pIntial_US0->US_CR = 0x0000115C; // (US0) Control Register
0000000C E5101000 LDR R1,=0x115C
00000010 E1A00003 MOV R0,R3 ; pIntial_US0
00000014 E5801000 STR R1,[R0,#0x0] ; pIntial_US0
100: pIntial_US0->US_MR = 0x00010CD0; // (US0) Mode Register
00000018 E5100000 LDR R0,=0x10CD0
0000001C E1A01003 MOV R1,R3 ; pIntial_US0
00000020 E5810004 STR R0,[R1,#0x4]
101: pIntial_US0->US_IER = 0x00001803; // (US0) Interrupt Enable Register
00000024 E5100000 LDR R0,=0x1803
00000028 E1A01003 MOV R1,R3 ; pIntial_US0
0000002C E5810008 STR R0,[R1,#0x8]
102: pIntial_US0->US_IDR = 0x00000000; // (US0) Interrupt Disable Register
ARM COMPILER V2.54a, Init 19/08/06 17:44:59 PAGE 4
00000030 E3A00000 MOV R0,#0x0
00000034 E1A01003 MOV R1,R3 ; pIntial_US0
00000038 E581000C STR R0,[R1,#0xC]
103: pIntial_US0->US_THR = 0x0; // (US0) Transmitter Holding Register
0000003C E3A00000 MOV R0,#0x0
00000040 E1A01003 MOV R1,R3 ; pIntial_US0
00000044 E581001C STR R0,[R1,#0x1C]
104: pIntial_US0->US_BRGR = 0x0; // (US0) Baud Rate Generator Register
00000048 E3A00000 MOV R0,#0x0
0000004C E1A01003 MOV R1,R3 ; pIntial_US0
00000050 E5810020 STR R0,[R1,#0x20]
105: pIntial_US0->US_RTOR = 0x0; // (US0) Receiver Time-out Register
00000054 E3A00000 MOV R0,#0x0
00000058 E1A01003 MOV R1,R3 ; pIntial_US0
0000005C E5810024 STR R0,[R1,#0x24]
106: pIntial_US0->US_TTGR = 0x0; // (US0) Transmitter Time-guard Register
00000060 E3A00000 MOV R0,#0x0
00000064 E1A01003 MOV R1,R3 ; pIntial_US0
00000068 E5810028 STR R0,[R1,#0x28]
108: pIntial_US1->US_CR = 0x0000115C;
0000006C E5101000 LDR R1,=0x115C
00000070 E1A00002 MOV R0,R2 ; pIntial_US1
00000074 E5801000 STR R1,[R0,#0x0] ; pIntial_US1
00000078 ; SCOPE-END
00000078 E28DD004 ADD R13,R13,#0x0004
0000007C E12FFF1E BX R14
00000080 ENDP ; 'Initial_USART?A'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -