📄 bsp.lst
字号:
59 void VIC_DummyTIMER1(void);
60 void VIC_DummyUART0(void);
61 void VIC_DummyUART1(void);
62 void VIC_DummyPWM0(void);
63 void VIC_DummyI2C(void);
64 void VIC_DummySPI(void);
65 void VIC_DummyRTC(void);
66 void VIC_DummyEINT0(void);
67 void VIC_DummyEINT1(void);
68 void VIC_DummyEINT2(void);
69
70 /*
71 *********************************************************************************************************
72 * BSP INITIALIZATION
73 *
74 * Description : This function should be called by your application code before you make use of any of the
75 * functions found in this module.
76 *
77 * Arguments : none
78 *********************************************************************************************************
79 */
80
\ In segment CODE, align 4, keep-with-next
81 void BSP_Init (void)
82 {
\ BSP_Init:
\ 00000000 00B5 PUSH {LR}
83 MEMMAP = 2; /* Remap 64 bytes of int. RAM to 0x00 */
\ 00000002 1148 LDR R0,??BSP_Init_0 ;; 0xe01fc040
\ 00000004 0221 MOVS R1,#+2
\ 00000006 0160 STR R1,[R0, #+0]
84
85 BSP_IRQ_VECTOR_ADDR = 0xE59FF018; /* LDR PC,[PC,#0x18] instruction */
\ 00000008 1820 MOVS R0,#+24
\ 0000000A 1049 LDR R1,??BSP_Init_0+0x4 ;; 0xe59ff018
\ 0000000C 0160 STR R1,[R0, #+0]
86 BSP_IRQ_ISR_ADDR = (INT32U)OS_CPU_IRQ_ISR; /* IRQ exception vector address */
\ 0000000E 3820 MOVS R0,#+56
\ 00000010 0F49 LDR R1,??BSP_Init_0+0x8 ;; OS_CPU_IRQ_ISR
\ 00000012 0160 STR R1,[R0, #+0]
87
88 BSP_FIQ_VECTOR_ADDR = 0xE59FF018; /* LDR PC,[PC,#0x18] instruction */
\ 00000014 1C20 MOVS R0,#+28
\ 00000016 0D49 LDR R1,??BSP_Init_0+0x4 ;; 0xe59ff018
\ 00000018 0160 STR R1,[R0, #+0]
89 BSP_FIQ_ISR_ADDR = (INT32U)OS_CPU_FIQ_ISR; /* FIQ exception vector address */
\ 0000001A 3C20 MOVS R0,#+60
\ 0000001C 0D49 LDR R1,??BSP_Init_0+0xC ;; OS_CPU_FIQ_ISR
\ 0000001E 0160 STR R1,[R0, #+0]
90
91
92 BSP_UNDEF_INSTRUCTION_VECTOR_ADDR = 0xEAFFFFFE; /* Jump to itself */
\ 00000020 0420 MOVS R0,#+4
\ 00000022 0D49 LDR R1,??BSP_Init_0+0x10 ;; 0xeafffffe
\ 00000024 0160 STR R1,[R0, #+0]
93 BSP_SWI_VECTOR_ADDR = 0xEAFFFFFE;
\ 00000026 0820 MOVS R0,#+8
\ 00000028 0160 STR R1,[R0, #+0]
94 BSP_PREFETCH_ABORT_VECTOR_ADDR = 0xEAFFFFFE;
\ 0000002A 0C20 MOVS R0,#+12
\ 0000002C 0160 STR R1,[R0, #+0]
95 BSP_DATA_ABORT_VECTOR_ADDR = 0xEAFFFFFE;
\ 0000002E 1020 MOVS R0,#+16
\ 00000030 0160 STR R1,[R0, #+0]
96 BSP_FIQ_VECTOR_ADDR = 0xEAFFFFFE;
\ 00000032 1C20 MOVS R0,#+28
\ 00000034 0160 STR R1,[R0, #+0]
97
98 VIC_Init(); /* Initialize the Vectored Interrupt Controller */
\ 00000036 ........ BL VIC_Init
99
100 LED_Init();
\ 0000003A ........ BL LED_Init
101 Tmr_TickInit();
\ 0000003E ........ BL Tmr_TickInit
102 }
\ 00000042 01BC POP {R0}
\ 00000044 0047 BX R0 ;; return
\ 00000046 C046 Nop
\ ??BSP_Init_0:
\ 00000048 40C01FE0 DC32 0xe01fc040
\ 0000004C 18F09FE5 DC32 0xe59ff018
\ 00000050 ........ DC32 OS_CPU_IRQ_ISR
\ 00000054 ........ DC32 OS_CPU_FIQ_ISR
\ 00000058 FEFFFFEA DC32 0xeafffffe
103
104
105 /*
106 *********************************************************************************************************
107 * BSP INITIALIZATION
108 *
109 * Description : This function should be called by your application code before you make use of any of the
110 * functions found in this module.
111 *
112 * Arguments : none
113 *********************************************************************************************************
114 */
115
\ In segment CODE, align 4, keep-with-next
116 void LED_Init (void)
117 {
\ LED_Init:
\ 00000000 00B5 PUSH {LR}
118 PINSEL0 = 0; /* Use GPIO pins P0.0 to P0.15 for LEDs */
\ 00000002 0648 LDR R0,??LED_Init_0 ;; 0xe002c000
\ 00000004 0021 MOVS R1,#+0
\ 00000006 0160 STR R1,[R0, #+0]
119 IODIR |= 0x0000FFFF; /* Set GPIO pins as outputs */
\ 00000008 0548 LDR R0,??LED_Init_0+0x4 ;; 0xe0028008
\ 0000000A 0168 LDR R1,[R0, #+0]
\ 0000000C .... LDR R2,??DataTable2 ;; 0xffff
\ 0000000E 0A43 ORRS R2,R2,R1
\ 00000010 0260 STR R2,[R0, #+0]
120
121 LED_Off(0); /* Turn OFF all the LEDs */
\ 00000012 0020 MOVS R0,#+0
\ 00000014 ........ BL LED_Off
122
123 }
\ 00000018 01BC POP {R0}
\ 0000001A 0047 BX R0 ;; return
\ ??LED_Init_0:
\ 0000001C 00C002E0 DC32 0xe002c000
\ 00000020 088002E0 DC32 0xe0028008
124
125 /*
126 *********************************************************************************************************
127 * LED ON
128 *
129 * Description : This function is used to control any or all the LEDs on the board.
130 *
131 * Arguments : led is the number of the LED to control
132 * 0 indicates that you want ALL the LEDs to be ON
133 * 1 turns ON LED1 on the board
134 * .
135 * .
136 * 8 turns ON LED8 on the board
137 *********************************************************************************************************
138 */
139
\ In segment CODE, align 4, keep-with-next
140 void LED_On (INT8U led)
141 {
\ LED_On:
\ 00000000 00B5 PUSH {LR}
142 switch (led) {
\ 00000002 1028 CMP R0,#+16
\ 00000004 46D8 BHI ??LED_On_1
\ 00000006 01A1 ADR R1,??LED_On_0
\ 00000008 095C LDRB R1,[R1, R0]
\ 0000000A 8F44 ADD PC,PC,R1
\ ??LED_On_0:
\ 0000000C 10161C22 DC8 +16,+22,+28,+34
\ 00000010 282E343A DC8 +40,+46,+52,+58
\ 00000014 40464E56 DC8 +64,+70,+78,+86
\ 00000018 5E666E76 DC8 +94,+102,+110,+118
\ 0000001C 7E00 DC8 +126,+0
143 case 0:
144 IOSET = 0x0000FFFF;
\ ??LED_On_2:
\ 0000001E 1E48 LDR R0,??LED_On_3 ;; 0xe0028004
\ 00000020 .... LDR R1,??DataTable2 ;; 0xffff
\ 00000022 36E0 B.N ??LED_On_4
145 break;
146
147 case 1:
148 IOSET = 1 << 0;
\ ??LED_On_5:
\ 00000024 1C48 LDR R0,??LED_On_3 ;; 0xe0028004
\ 00000026 0121 MOVS R1,#+1
\ 00000028 33E0 B.N ??LED_On_4
149 break;
150
151 case 2:
152 IOSET = 1 << 1;
\ ??LED_On_6:
\ 0000002A 1B48 LDR R0,??LED_On_3 ;; 0xe0028004
\ 0000002C 0221 MOVS R1,#+2
\ 0000002E 30E0 B.N ??LED_On_4
153 break;
154
155 case 3:
156 IOSET = 1 << 2;
\ ??LED_On_7:
\ 00000030 1948 LDR R0,??LED_On_3 ;; 0xe0028004
\ 00000032 0421 MOVS R1,#+4
\ 00000034 2DE0 B.N ??LED_On_4
157 break;
158
159 case 4:
160 IOSET = 1 << 3;
\ ??LED_On_8:
\ 00000036 1848 LDR R0,??LED_On_3 ;; 0xe0028004
\ 00000038 0821 MOVS R1,#+8
\ 0000003A 2AE0 B.N ??LED_On_4
161 break;
162
163 case 5:
164 IOSET = 1 << 4;
\ ??LED_On_9:
\ 0000003C 1648 LDR R0,??LED_On_3 ;; 0xe0028004
\ 0000003E 1021 MOVS R1,#+16
\ 00000040 27E0 B.N ??LED_On_4
165 break;
166
167 case 6:
168 IOSET = 1 << 5;
\ ??LED_On_10:
\ 00000042 1548 LDR R0,??LED_On_3 ;; 0xe0028004
\ 00000044 2021 MOVS R1,#+32
\ 00000046 24E0 B.N ??LED_On_4
169 break;
170
171 case 7:
172 IOSET = 1 << 6;
\ ??LED_On_11:
\ 00000048 1348 LDR R0,??LED_On_3 ;; 0xe0028004
\ 0000004A 4021 MOVS R1,#+64
\ 0000004C 21E0 B.N ??LED_On_4
173 break;
174
175 case 8:
176 IOSET = 1 << 7;
\ ??LED_On_12:
\ 0000004E 1248 LDR R0,??LED_On_3 ;; 0xe0028004
\ 00000050 8021 MOVS R1,#+128
\ 00000052 1EE0 B.N ??LED_On_4
177 break;
178
179 case 9:
180 IOSET = 1 << 8;
\ ??LED_On_13:
\ 00000054 1048 LDR R0,??LED_On_3 ;; 0xe0028004
\ 00000056 8021 MOVS R1,#+128
\ 00000058 4900 LSLS R1,R1,#+1 ;; #+256
\ 0000005A 1AE0 B.N ??LED_On_4
181 break;
182
183 case 10:
184 IOSET = 1 << 9;
\ ??LED_On_14:
\ 0000005C 0E48 LDR R0,??LED_On_3 ;; 0xe0028004
\ 0000005E 8021 MOVS R1,#+128
\ 00000060 8900 LSLS R1,R1,#+2 ;; #+512
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -