📄 bsp.lst
字号:
53 */
54
55 void VIC_Init(void);
56 void VIC_Dummy(void);
57 void VIC_DummyWDT(void);
58 void VIC_DummyTIMER0(void);
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 { extern void pwminit(void);
\ BSP_Init:
\ 00000000 00B5 PUSH {LR}
83 MEMMAP = 2; /* Remap 64 bytes of int. RAM to 0x00 */
\ 00000002 1348 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 1249 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 1149 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 0F49 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 0F49 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 0F49 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 0D49 LDR R1,??BSP_Init_0+0x10 ;; 0xeafffffe
\ 0000002A 0160 STR R1,[R0, #+0]
94 BSP_PREFETCH_ABORT_VECTOR_ADDR = 0xEAFFFFFE;
\ 0000002C 0C20 MOVS R0,#+12
\ 0000002E 0C49 LDR R1,??BSP_Init_0+0x10 ;; 0xeafffffe
\ 00000030 0160 STR R1,[R0, #+0]
95 BSP_DATA_ABORT_VECTOR_ADDR = 0xEAFFFFFE;
\ 00000032 1020 MOVS R0,#+16
\ 00000034 0A49 LDR R1,??BSP_Init_0+0x10 ;; 0xeafffffe
\ 00000036 0160 STR R1,[R0, #+0]
96 BSP_FIQ_VECTOR_ADDR = 0xEAFFFFFE;
\ 00000038 1C20 MOVS R0,#+28
\ 0000003A 0949 LDR R1,??BSP_Init_0+0x10 ;; 0xeafffffe
\ 0000003C 0160 STR R1,[R0, #+0]
97
98 VIC_Init(); /* Initialize the Vectored Interrupt Controller */
\ 0000003E ........ BL VIC_Init
99
100 LED_Init();
\ 00000042 ........ BL LED_Init
101 Tmr_TickInit();
\ 00000046 ........ BL Tmr_TickInit
102 }
\ 0000004A 01BC POP {R0}
\ 0000004C 0047 BX R0 ;; return
\ 0000004E C046 Nop
\ ??BSP_Init_0:
\ 00000050 40C01FE0 DC32 0xe01fc040
\ 00000054 18F09FE5 DC32 0xe59ff018
\ 00000058 ........ DC32 OS_CPU_IRQ_ISR
\ 0000005C ........ DC32 OS_CPU_FIQ_ISR
\ 00000060 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 0748 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 0648 LDR R0,??LED_Init_0+0x4 ;; 0xe0028008
\ 0000000A 0649 LDR R1,??LED_Init_0+0x4 ;; 0xe0028008
\ 0000000C 0968 LDR R1,[R1, #+0]
\ 0000000E .... LDR R2,??DataTable2 ;; 0xffff
\ 00000010 0A43 ORRS R2,R2,R1
\ 00000012 0260 STR R2,[R0, #+0]
120
121 LED_Off(0); /* Turn OFF all the LEDs */
\ 00000014 0020 MOVS R0,#+0
\ 00000016 ........ BL LED_Off
122
123 }
\ 0000001A 01BC POP {R0}
\ 0000001C 0047 BX R0 ;; return
\ 0000001E C046 Nop
\ ??LED_Init_0:
\ 00000020 00C002E0 DC32 0xe002c000
\ 00000024 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 0028 CMP R0,#+0
\ 00000004 20D0 BEQ ??LED_On_0
\ 00000006 0128 CMP R0,#+1
\ 00000008 22D0 BEQ ??LED_On_1
\ 0000000A 0228 CMP R0,#+2
\ 0000000C 24D0 BEQ ??LED_On_2
\ 0000000E 0328 CMP R0,#+3
\ 00000010 26D0 BEQ ??LED_On_3
\ 00000012 0428 CMP R0,#+4
\ 00000014 28D0 BEQ ??LED_On_4
\ 00000016 0528 CMP R0,#+5
\ 00000018 2AD0 BEQ ??LED_On_5
\ 0000001A 0628 CMP R0,#+6
\ 0000001C 2CD0 BEQ ??LED_On_6
\ 0000001E 0728 CMP R0,#+7
\ 00000020 2ED0 BEQ ??LED_On_7
\ 00000022 0828 CMP R0,#+8
\ 00000024 30D0 BEQ ??LED_On_8
\ 00000026 0928 CMP R0,#+9
\ 00000028 32D0 BEQ ??LED_On_9
\ 0000002A 0A28 CMP R0,#+10
\ 0000002C 35D0 BEQ ??LED_On_10
\ 0000002E 0B28 CMP R0,#+11
\ 00000030 38D0 BEQ ??LED_On_11
\ 00000032 0C28 CMP R0,#+12
\ 00000034 3BD0 BEQ ??LED_On_12
\ 00000036 0D28 CMP R0,#+13
\ 00000038 3ED0 BEQ ??LED_On_13
\ 0000003A 0E28 CMP R0,#+14
\ 0000003C 41D0 BEQ ??LED_On_14
\ 0000003E 0F28 CMP R0,#+15
\ 00000040 44D0 BEQ ??LED_On_15
\ 00000042 1028 CMP R0,#+16
\ 00000044 47D0 BEQ ??LED_On_16
\ 00000046 4AE0 B ??LED_On_17
143 case 0:
144 IOSET = 0x0000FFFF;
\ ??LED_On_0:
\ 00000048 2648 LDR R0,??LED_On_18 ;; 0xe0028004
\ 0000004A .... LDR R1,??DataTable2 ;; 0xffff
\ 0000004C 0160 STR R1,[R0, #+0]
\ 0000004E 46E0 B ??LED_On_17
145 break;
146
147 case 1:
148 IOSET = 1 << 0;
\ ??LED_On_1:
\ 00000050 2448 LDR R0,??LED_On_18 ;; 0xe0028004
\ 00000052 0121 MOVS R1,#+1
\ 00000054 0160 STR R1,[R0, #+0]
\ 00000056 42E0 B ??LED_On_17
149 break;
150
151 case 2:
152 IOSET = 1 << 1;
\ ??LED_On_2:
\ 00000058 2248 LDR R0,??LED_On_18 ;; 0xe0028004
\ 0000005A 0221 MOVS R1,#+2
\ 0000005C 0160 STR R1,[R0, #+0]
\ 0000005E 3EE0 B ??LED_On_17
153 break;
154
155 case 3:
156 IOSET = 1 << 2;
\ ??LED_On_3:
\ 00000060 2048 LDR R0,??LED_On_18 ;; 0xe0028004
\ 00000062 0421 MOVS R1,#+4
\ 00000064 0160 STR R1,[R0, #+0]
\ 00000066 3AE0 B ??LED_On_17
157 break;
158
159 case 4:
160 IOSET = 1 << 3;
\ ??LED_On_4:
\ 00000068 1E48 LDR R0,??LED_On_18 ;; 0xe0028004
\ 0000006A 0821 MOVS R1,#+8
\ 0000006C 0160 STR R1,[R0, #+0]
\ 0000006E 36E0 B ??LED_On_17
161 break;
162
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -