📄 bsp_int.lst
字号:
159 CPU_IntDis();
\ 00000002 ........ _BLF CPU_IntDis,??CPU_IntDis??rT
160 }
\ 00000006 00BD POP {PC} ;; return
161
162
163 /*
164 *********************************************************************************************************
165 * BSP_IntEn()
166 *
167 * Description : Enable interrupt.
168 *
169 * Argument(s) : int_id Interrupt to enable.
170 *
171 * Return(s) : none.
172 *
173 * Caller(s) : Application.
174 *
175 * Note(s) : none.
176 *********************************************************************************************************
177 */
178
\ In segment CODE, align 4, keep-with-next
179 void BSP_IntEn (CPU_DATA int_id)
180 {
\ BSP_IntEn:
\ 00000000 00B5 PUSH {LR}
181 if (int_id < BSP_INT_SRC_NBR) {
\ 00000002 3C28 CMP R0,#+60
\ 00000004 03D2 BCS.N ??BSP_IntEn_0
182 CPU_IntSrcEn(int_id + 16);
\ 00000006 1030 ADDS R0,R0,#+16
\ 00000008 C0B2 UXTB R0,R0
\ 0000000A ........ _BLF CPU_IntSrcEn,??CPU_IntSrcEn??rT
183 }
184 }
\ ??BSP_IntEn_0:
\ 0000000E 00BD POP {PC} ;; return
185
186
187 /*
188 *********************************************************************************************************
189 * BSP_IntVectSet()
190 *
191 * Description : Assign ISR handler.
192 *
193 * Argument(s) : int_id Interrupt for which vector will be set.
194 *
195 * isr Handler to assign
196 *
197 * Return(s) : none.
198 *
199 * Caller(s) : Application.
200 *
201 * Note(s) : none.
202 *********************************************************************************************************
203 */
204
\ In segment CODE, align 4, keep-with-next
205 void BSP_IntVectSet (CPU_DATA int_id,
206 CPU_FNCT_VOID isr)
207 {
\ BSP_IntVectSet:
\ 00000000 30B5 PUSH {R4,R5,LR}
\ 00000002 0400 MOVS R4,R0
\ 00000004 0D00 MOVS R5,R1
208 #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
209 CPU_SR cpu_sr;
210 #endif
211
212
213 if (int_id < BSP_INT_SRC_NBR) {
\ 00000006 3C2C CMP R4,#+60
\ 00000008 06D2 BCS.N ??BSP_IntVectSet_0
214 CPU_CRITICAL_ENTER();
\ 0000000A ........ _BLF CPU_SR_Save,??CPU_SR_Save??rT
215 BSP_IntVectTbl[int_id] = isr;
\ 0000000E .... LDR.N R1,??DataTable1 ;; BSP_IntVectTbl
\ 00000010 41F82450 STR R5,[R1, R4, LSL #+2]
216 CPU_CRITICAL_EXIT();
\ 00000014 ........ _BLF CPU_SR_Restore,??CPU_SR_Restore??rT
217 }
218 }
\ ??BSP_IntVectSet_0:
\ 00000018 30BD POP {R4,R5,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 segment CODE, align 4, 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 #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
243 CPU_SR cpu_sr;
244 #endif
245
246
247 if (int_id < BSP_INT_SRC_NBR) {
\ 00000006 3C2C CMP R4,#+60
\ 00000008 0BD2 BCS.N ??BSP_IntPrioSet_0
248 CPU_CRITICAL_ENTER();
\ 0000000A ........ _BLF CPU_SR_Save,??CPU_SR_Save??rT
\ 0000000E 0600 MOVS R6,R0
249 CPU_IntSrcPrioSet(int_id + 16, prio);
\ 00000010 2900 MOVS R1,R5
\ 00000012 1034 ADDS R4,R4,#+16
\ 00000014 2000 MOVS R0,R4
\ 00000016 C0B2 UXTB R0,R0
\ 00000018 ........ _BLF CPU_IntSrcPrioSet,??CPU_IntSrcPrioSet??rT
250 CPU_CRITICAL_EXIT();
\ 0000001C 3000 MOVS R0,R6
\ 0000001E ........ _BLF CPU_SR_Restore,??CPU_SR_Restore??rT
251 }
252 }
\ ??BSP_IntPrioSet_0:
\ 00000022 70BD POP {R4-R6,PC} ;; return
253
254
255 /*
256 *********************************************************************************************************
257 *********************************************************************************************************
258 * INTERNAL FUNCTIONS
259 *********************************************************************************************************
260 *********************************************************************************************************
261 */
262
263 /*
264 *********************************************************************************************************
265 * BSP_IntInit()
266 *
267 * Description : Initialize interrupts:
268 *
269 * Argument(s) : none.
270 *
271 * Return(s) : none.
272 *
273 * Caller(s) : BSP_Init().
274 *
275 * Note(s) : none.
276 *********************************************************************************************************
277 */
278
\ In segment CODE, align 4, keep-with-next
279 void BSP_IntInit (void)
280 {
\ BSP_IntInit:
\ 00000000 10B5 PUSH {R4,LR}
281 CPU_DATA int_id;
282
283
284 for (int_id = 0; int_id < BSP_INT_SRC_NBR; int_id++) {
\ 00000002 0024 MOVS R4,#+0
\ 00000004 04E0 B.N ??BSP_IntInit_0
285 BSP_IntVectSet(int_id, BSP_IntHandlerDummy);
\ ??BSP_IntInit_1:
\ 00000006 0449 LDR.N R1,??BSP_IntInit_2 ;; BSP_IntHandlerDummy
\ 00000008 2000 MOVS R0,R4
\ 0000000A ........ BL BSP_IntVectSet
286 }
\ 0000000E 641C ADDS R4,R4,#+1
\ ??BSP_IntInit_0:
\ 00000010 3C2C CMP R4,#+60
\ 00000012 F8D3 BCC.N ??BSP_IntInit_1
287 }
\ 00000014 10BD POP {R4,PC} ;; return
\ 00000016 00BF Nop
\ ??BSP_IntInit_2:
\ 00000018 ........ DC32 BSP_IntHandlerDummy
288
289
290 /*
291 *********************************************************************************************************
292 * BSP_IntHandler####()
293 *
294 * Description : Handle an interrupt.
295 *
296 * Argument(s) : none.
297 *
298 * Return(s) : none.
299 *
300 * Caller(s) : This is an ISR.
301 *
302 * Note(s) : none.
303 *********************************************************************************************************
304 */
305
\ In segment CODE, align 4, keep-with-next
306 void BSP_IntHandlerWWDG (void) { BSP_IntHandler(BSP_INT_ID_WWDG); }
\ BSP_IntHandlerWWDG:
\ 00000000 00B5 PUSH {LR}
\ 00000002 0020 MOVS R0,#+0
\ 00000004 ........ BL BSP_IntHandler
\ 00000008 00BD POP {PC} ;; return
\ In segment CODE, align 4, keep-with-next
307 void BSP_IntHandlerPVD (void) { BSP_IntHandler(BSP_INT_ID_PVD); }
\ BSP_IntHandlerPVD:
\ 00000000 00B5 PUSH {LR}
\ 00000002 0120 MOVS R0,#+1
\ 00000004 ........ BL BSP_IntHandler
\ 00000008 00BD POP {PC} ;; return
\ In segment CODE, align 4, keep-with-next
308 void BSP_IntHandlerTAMPER (void) { BSP_IntHandler(BSP_INT_ID_TAMPER); }
\ BSP_IntHandlerTAMPER:
\ 00000000 00B5 PUSH {LR}
\ 00000002 0220 MOVS R0,#+2
\ 00000004 ........ BL BSP_IntHandler
\ 00000008 00BD POP {PC} ;; return
\ In segment CODE, align 4, keep-with-next
309 void BSP_IntHandlerRTC (void) { BSP_IntHandler(BSP_INT_ID_RTC); }
\ BSP_IntHandlerRTC:
\ 00000000 00B5 PUSH {LR}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -