📄 bsp_int.lst
字号:
170 *
171 * Argument(s) : int_id Interrupt to enable.
172 *
173 * Return(s) : none.
174 *
175 * Caller(s) : Application.
176 *
177 * Note(s) : none.
178 *********************************************************************************************************
179 */
180
\ In section .text, align 2, keep-with-next
181 void BSP_IntEn (CPU_DATA int_id)
182 {
\ BSP_IntEn:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
183 if (int_id < BSP_INT_SRC_NBR) {
\ 00000004 442C CMP R4,#+68
\ 00000006 04D2 BCS.N ??BSP_IntEn_0
184 CPU_IntSrcEn(int_id + 16);
\ 00000008 14F11000 ADDS R0,R4,#+16
\ 0000000C C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 0000000E ........ BL CPU_IntSrcEn
185 }
186 }
\ ??BSP_IntEn_0:
\ 00000012 10BD POP {R4,PC} ;; return
187
188
189 /*
190 *********************************************************************************************************
191 * BSP_IntVectSet()
192 *
193 * Description : Assign ISR handler.
194 *
195 * Argument(s) : int_id Interrupt for which vector will be set.
196 *
197 * isr Handler to assign
198 *
199 * Return(s) : none.
200 *
201 * Caller(s) : Application.
202 *
203 * Note(s) : none.
204 *********************************************************************************************************
205 */
206
\ In section .text, align 2, keep-with-next
207 void BSP_IntVectSet (CPU_DATA int_id,
208 CPU_FNCT_VOID isr)
209 {
\ BSP_IntVectSet:
\ 00000000 70B5 PUSH {R4-R6,LR}
\ 00000002 0400 MOVS R4,R0
\ 00000004 0D00 MOVS R5,R1
210 CPU_SR_ALLOC();
\ 00000006 0026 MOVS R6,#+0
211
212
213 if (int_id < BSP_INT_SRC_NBR) {
\ 00000008 442C CMP R4,#+68
\ 0000000A 08D2 BCS.N ??BSP_IntVectSet_0
214 CPU_CRITICAL_ENTER();
\ 0000000C ........ BL CPU_SR_Save
\ 00000010 0600 MOVS R6,R0
215 BSP_IntVectTbl[int_id] = isr;
\ 00000012 .... LDR.N R0,??DataTable2
\ 00000014 40F82450 STR R5,[R0, R4, LSL #+2]
216 CPU_CRITICAL_EXIT();
\ 00000018 3000 MOVS R0,R6
\ 0000001A ........ BL CPU_SR_Restore
217 }
218 }
\ ??BSP_IntVectSet_0:
\ 0000001E 70BD POP {R4-R6,PC} ;; return
219
220
221 /*
222 *********************************************************************************************************
223 * BSP_IntPrioSet()
224 *
225 * Description : Assign ISR priority.
226 *
227 * Argument(s) : int_id Interrupt for which vector will be set.
228 *
229 * prio Priority to assign
230 *
231 * Return(s) : none.
232 *
233 * Caller(s) : Application.
234 *
235 * Note(s) : none.
236 *********************************************************************************************************
237 */
238
\ In section .text, align 2, keep-with-next
239 void BSP_IntPrioSet (CPU_DATA int_id,
240 CPU_INT08U prio)
241 {
\ BSP_IntPrioSet:
\ 00000000 70B5 PUSH {R4-R6,LR}
\ 00000002 0400 MOVS R4,R0
\ 00000004 0D00 MOVS R5,R1
242 CPU_SR_ALLOC();
\ 00000006 0026 MOVS R6,#+0
243
244
245 if (int_id < BSP_INT_SRC_NBR) {
\ 00000008 442C CMP R4,#+68
\ 0000000A 0CD2 BCS.N ??BSP_IntPrioSet_0
246 CPU_CRITICAL_ENTER();
\ 0000000C ........ BL CPU_SR_Save
\ 00000010 0600 MOVS R6,R0
247 CPU_IntSrcPrioSet(int_id + 16, prio);
\ 00000012 2900 MOVS R1,R5
\ 00000014 C9B2 UXTB R1,R1 ;; ZeroExt R1,R1,#+24,#+24
\ 00000016 14F11000 ADDS R0,R4,#+16
\ 0000001A C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 0000001C ........ BL CPU_IntSrcPrioSet
248 CPU_CRITICAL_EXIT();
\ 00000020 3000 MOVS R0,R6
\ 00000022 ........ BL CPU_SR_Restore
249 }
250 }
\ ??BSP_IntPrioSet_0:
\ 00000026 70BD POP {R4-R6,PC} ;; return
251
252
253 /*
254 *********************************************************************************************************
255 *********************************************************************************************************
256 * INTERNAL FUNCTIONS
257 *********************************************************************************************************
258 *********************************************************************************************************
259 */
260
261 /*
262 *********************************************************************************************************
263 * BSP_IntInit()
264 *
265 * Description : Initialize interrupts:
266 *
267 * Argument(s) : none.
268 *
269 * Return(s) : none.
270 *
271 * Caller(s) : BSP_Init().
272 *
273 * Note(s) : none.
274 *********************************************************************************************************
275 */
276
\ In section .text, align 2, keep-with-next
277 void BSP_IntInit (void)
278 {
\ BSP_IntInit:
\ 00000000 10B5 PUSH {R4,LR}
279 CPU_DATA int_id;
280
281
282 for (int_id = 0; int_id < BSP_INT_SRC_NBR; int_id++) {
\ 00000002 0020 MOVS R0,#+0
\ 00000004 0400 MOVS R4,R0
\ ??BSP_IntInit_0:
\ 00000006 442C CMP R4,#+68
\ 00000008 05D2 BCS.N ??BSP_IntInit_1
283 BSP_IntVectSet(int_id, BSP_IntHandlerDummy);
\ 0000000A .... LDR.N R1,??DataTable2_1
\ 0000000C 2000 MOVS R0,R4
\ 0000000E ........ BL BSP_IntVectSet
284 }
\ 00000012 641C ADDS R4,R4,#+1
\ 00000014 F7E7 B.N ??BSP_IntInit_0
285 }
\ ??BSP_IntInit_1:
\ 00000016 10BD POP {R4,PC} ;; return
286
287
288 /*
289 *********************************************************************************************************
290 * BSP_IntHandler####()
291 *
292 * Description : Handle an interrupt.
293 *
294 * Argument(s) : none.
295 *
296 * Return(s) : none.
297 *
298 * Caller(s) : This is an ISR.
299 *
300 * Note(s) : none.
301 *********************************************************************************************************
302 */
303
\ In section .text, align 2, keep-with-next
304 void BSP_IntHandlerWWDG (void) { BSP_IntHandler(BSP_INT_ID_WWDG); }
\ BSP_IntHandlerWWDG:
\ 00000000 80B5 PUSH {R7,LR}
\ 00000002 0020 MOVS R0,#+0
\ 00000004 ........ BL BSP_IntHandler
\ 00000008 01BD POP {R0,PC} ;; return
\ In section .text, align 2, keep-with-next
305 void BSP_IntHandlerPVD (void) { BSP_IntHandler(BSP_INT_ID_PVD); }
\ BSP_IntHandlerPVD:
\ 00000000 80B5 PUSH {R7,LR}
\ 00000002 0120 MOVS R0,#+1
\ 00000004 ........ BL BSP_IntHandler
\ 00000008 01BD POP {R0,PC} ;; return
\ In section .text, align 2, keep-with-next
306 void BSP_IntHandlerTAMPER (void) { BSP_IntHandler(BSP_INT_ID_TAMPER); }
\ BSP_IntHandlerTAMPER:
\ 00000000 80B5 PUSH {R7,LR}
\ 00000002 0220 MOVS R0,#+2
\ 00000004 ........ BL BSP_IntHandler
\ 00000008 01BD POP {R0,PC} ;; return
\ In section .text, align 2, keep-with-next
307 void BSP_IntHandlerRTC (void) { BSP_IntHandler(BSP_INT_ID_RTC); }
\ BSP_IntHandlerRTC:
\ 00000000 80B5 PUSH {R7,LR}
\ 00000002 0320 MOVS R0,#+3
\ 00000004 ........ BL BSP_IntHandler
\ 00000008 01BD POP {R0,PC} ;; return
\ In section .text, align 2, keep-with-next
308 void BSP_IntHandlerFLASH (void) { BSP_IntHandler(BSP_INT_ID_FLASH); }
\ BSP_IntHandlerFLASH:
\ 00000000 80B5 PUSH {R7,LR}
\ 00000002 0420 MOVS R0,#+4
\ 00000004 ........ BL BSP_IntHandler
\ 00000008 01BD POP {R0,PC} ;; return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -