⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bsp.lst

📁 ARM仿真案例
💻 LST
📖 第 1 页 / 共 5 页
字号:
    370          */
    371          

   \                                 In segment CODE, align 4, keep-with-next
    372          void  OS_CPU_FIQ_ISR_Handler (void)
    373          {
   \                     OS_CPU_FIQ_ISR_Handler:
   \   00000000   00B5               PUSH     {LR}
    374              PFNCT  pfnct;
    375          
    376          
    377          #if 1   
    378              pfnct = (PFNCT)VICVectAddr;                 /* Read the interrupt vector from the VIC               */
   \   00000002   ....               LDR      R0,??DataTable6  ;; 0xfffff030
   \   00000004   0068               LDR      R0,[R0, #+0]
    379              if (pfnct != (PFNCT)0) {                    /* Make sure we don't have a NULL pointer               */
   \   00000006   0100               MOVS     R1,R0
   \   00000008   0029               CMP      R1,#+0
   \   0000000A   01D0               BEQ      ??OS_CPU_FIQ_ISR_Handler_0
    380                  (*pfnct)();                             /* Execute the ISR for the interrupting device          */
   \   0000000C   ........           BL       ??rT_BX_R0
    381              }
    382          #else    
    383              pfnct = (PFNCT)VICVectAddr;                 /* Read the interrupt vector from the VIC               */
    384              while (pfnct != (PFNCT)0) {                 /* Make sure we don't have a NULL pointer               */
    385                (*pfnct)();                               /* Execute the ISR for the interrupting device          */
    386                  pfnct = (PFNCT)VICVectAddr;             /* Read the interrupt vector from the VIC               */
    387              }
    388          #endif    
    389          }
   \                     ??OS_CPU_FIQ_ISR_Handler_0:
   \   00000010   01BC               POP      {R0}
   \   00000012   0047               BX       R0               ;; return
    390          
    391          
    392          /*
    393          *********************************************************************************************************
    394          *                                         TIMER #0 IRQ HANDLER
    395          *
    396          * Description : This function handles the timer interrupt that is used to generate TICKs for uC/OS-II.
    397          *               
    398          * Arguments   : none
    399          *********************************************************************************************************
    400          */
    401          

   \                                 In segment CODE, align 4, keep-with-next
    402          void  Tmr_TickISR_Handler (void)
    403          {
   \                     Tmr_TickISR_Handler:
   \   00000000   00B5               PUSH     {LR}
    404              T0IR        = 0xFF;                 /* Clear timer #0 interrupt                                    */
   \   00000002   0548               LDR      R0,??Tmr_TickISR_Handler_0  ;; 0xe0004000
   \   00000004   FF21               MOVS     R1,#+255
   \   00000006   0160               STR      R1,[R0, #+0]
    405              OSTimeTick();                       /* If the interrupt is from the tick source, call OSTimeTick() */
   \   00000008   ........           _BLF     OSTimeTick,??OSTimeTick??rT
    406              VICVectAddr = 0;
   \   0000000C   ....               LDR      R0,??DataTable6  ;; 0xfffff030
   \   0000000E   0021               MOVS     R1,#+0
   \   00000010   0160               STR      R1,[R0, #+0]
    407          }
   \   00000012   01BC               POP      {R0}
   \   00000014   0047               BX       R0               ;; return
   \   00000016   C046               Nop      
   \                     ??Tmr_TickISR_Handler_0:
   \   00000018   004000E0           DC32     0xe0004000
    408          
    409          
    410          /*
    411          *********************************************************************************************************
    412          *                                        Vectored Interrupt Controller
    413          *********************************************************************************************************
    414          */
    415          

   \                                 In segment CODE, align 4, keep-with-next
    416          void  VIC_Init (void)
    417          {
    418              VICIntEnClear = 0xFFFFFFFF;                  /* Disable ALL interrupts                             */
   \                     VIC_Init:
   \   00000000   1548               LDR      R0,??VIC_Init_0  ;; 0xfffff014
   \   00000002   0021               MOVS     R1,#+0
   \   00000004   C943               MVNS     R1,R1            ;; #-1
   \   00000006   0160               STR      R1,[R0, #+0]
    419              VICProtection = 0;                           /* Setup interrupt controller                         */
   \   00000008   1448               LDR      R0,??VIC_Init_0+0x4  ;; 0xfffff020
   \   0000000A   0021               MOVS     R1,#+0
   \   0000000C   0160               STR      R1,[R0, #+0]
    420          
    421              VICVectAddr1  = (INT32U)VIC_DummyWDT;        /* Set the vector address                             */
   \   0000000E   1448               LDR      R0,??VIC_Init_0+0x8  ;; 0xfffff104
   \   00000010   1449               LDR      R1,??VIC_Init_0+0xC  ;; VIC_DummyWDT
   \   00000012   0160               STR      R1,[R0, #+0]
    422              VICVectAddr2  = (INT32U)VIC_DummyTIMER0; 
   \   00000014   ....               LDR      R0,??DataTable7  ;; 0xfffff108
   \   00000016   1449               LDR      R1,??VIC_Init_0+0x10  ;; VIC_DummyTIMER0
   \   00000018   0160               STR      R1,[R0, #+0]
    423              VICVectAddr3  = (INT32U)VIC_DummyTIMER1;
   \   0000001A   1448               LDR      R0,??VIC_Init_0+0x14  ;; 0xfffff10c
   \   0000001C   1449               LDR      R1,??VIC_Init_0+0x18  ;; VIC_DummyTIMER1
   \   0000001E   0160               STR      R1,[R0, #+0]
    424              VICVectAddr4  = (INT32U)VIC_DummyUART0;
   \   00000020   1448               LDR      R0,??VIC_Init_0+0x1C  ;; 0xfffff110
   \   00000022   1549               LDR      R1,??VIC_Init_0+0x20  ;; VIC_DummyUART0
   \   00000024   0160               STR      R1,[R0, #+0]
    425              VICVectAddr5  = (INT32U)VIC_DummyUART1;
   \   00000026   1548               LDR      R0,??VIC_Init_0+0x24  ;; 0xfffff114
   \   00000028   1549               LDR      R1,??VIC_Init_0+0x28  ;; VIC_DummyUART1
   \   0000002A   0160               STR      R1,[R0, #+0]
    426              VICVectAddr6  = (INT32U)VIC_DummyPWM0;
   \   0000002C   1548               LDR      R0,??VIC_Init_0+0x2C  ;; 0xfffff118
   \   0000002E   1649               LDR      R1,??VIC_Init_0+0x30  ;; VIC_DummyPWM0
   \   00000030   0160               STR      R1,[R0, #+0]
    427              VICVectAddr7  = (INT32U)VIC_DummyI2C;
   \   00000032   1648               LDR      R0,??VIC_Init_0+0x34  ;; 0xfffff11c
   \   00000034   1649               LDR      R1,??VIC_Init_0+0x38  ;; VIC_DummyI2C
   \   00000036   0160               STR      R1,[R0, #+0]
    428              VICVectAddr8  = (INT32U)VIC_DummySPI;
   \   00000038   1648               LDR      R0,??VIC_Init_0+0x3C  ;; 0xfffff120
   \   0000003A   1749               LDR      R1,??VIC_Init_0+0x40  ;; VIC_DummySPI
   \   0000003C   0160               STR      R1,[R0, #+0]
    429              VICVectAddr9  = (INT32U)VIC_DummyRTC;
   \   0000003E   1748               LDR      R0,??VIC_Init_0+0x44  ;; 0xfffff124
   \   00000040   1749               LDR      R1,??VIC_Init_0+0x48  ;; VIC_DummyRTC
   \   00000042   0160               STR      R1,[R0, #+0]
    430              VICVectAddr10 = (INT32U)VIC_DummyEINT0;
   \   00000044   1748               LDR      R0,??VIC_Init_0+0x4C  ;; 0xfffff128
   \   00000046   1849               LDR      R1,??VIC_Init_0+0x50  ;; VIC_DummyEINT0
   \   00000048   0160               STR      R1,[R0, #+0]
    431              VICVectAddr11 = (INT32U)VIC_DummyEINT1;
   \   0000004A   1848               LDR      R0,??VIC_Init_0+0x54  ;; 0xfffff12c
   \   0000004C   1849               LDR      R1,??VIC_Init_0+0x58  ;; VIC_DummyEINT1
   \   0000004E   0160               STR      R1,[R0, #+0]
    432              VICVectAddr12 = (INT32U)VIC_DummyEINT2;
   \   00000050   1848               LDR      R0,??VIC_Init_0+0x5C  ;; 0xfffff130
   \   00000052   1949               LDR      R1,??VIC_Init_0+0x60  ;; VIC_DummyEINT2
   \   00000054   0160               STR      R1,[R0, #+0]
    433          }
   \   00000056   7047               BX       LR               ;; return
   \                     ??VIC_Init_0:
   \   00000058   14F0FFFF           DC32     0xfffff014
   \   0000005C   20F0FFFF           DC32     0xfffff020
   \   00000060   04F1FFFF           DC32     0xfffff104
   \   00000064   ........           DC32     VIC_DummyWDT
   \   00000068   ........           DC32     VIC_DummyTIMER0
   \   0000006C   0CF1FFFF           DC32     0xfffff10c
   \   00000070   ........           DC32     VIC_DummyTIMER1
   \   00000074   10F1FFFF           DC32     0xfffff110
   \   00000078   ........           DC32     VIC_DummyUART0
   \   0000007C   14F1FFFF           DC32     0xfffff114
   \   00000080   ........           DC32     VIC_DummyUART1
   \   00000084   18F1FFFF           DC32     0xfffff118
   \   00000088   ........           DC32     VIC_DummyPWM0
   \   0000008C   1CF1FFFF           DC32     0xfffff11c
   \   00000090   ........           DC32     VIC_DummyI2C
   \   00000094   20F1FFFF           DC32     0xfffff120
   \   00000098   ........           DC32     VIC_DummySPI
   \   0000009C   24F1FFFF           DC32     0xfffff124
   \   000000A0   ........           DC32     VIC_DummyRTC
   \   000000A4   28F1FFFF           DC32     0xfffff128
   \   000000A8   ........           DC32     VIC_DummyEINT0
   \   000000AC   2CF1FFFF           DC32     0xfffff12c
   \   000000B0   ........           DC32     VIC_DummyEINT1
   \   000000B4   30F1FFFF           DC32     0xfffff130
   \   000000B8   ........           DC32     VIC_DummyEINT2
    434          
    435          

   \                                 In segment CODE, align 4, keep-with-next
    436          void  VIC_Dummy (void)
    437          {
   \                     VIC_Dummy:
   \   00000000   00B5               PUSH     {LR}
    438              while (1) {
    439                  (void)VIC_SpuriousInt;
   \                     ??VIC_Dummy_0:
   \   00000002   FEE7               B        ??VIC_Dummy_0
    440              }
    441          }
    442          
    443          

   \                                 In segment CODE, align 4, keep-with-next
    444          void  VIC_DummyWDT (void)
    445          {
   \                     VIC_DummyWDT:
   \   00000000   00B5               PUSH     {LR}
    446              VIC_SpuriousInt = VIC_WDT;
   \   00000002   ....               LDR      R0,??DataTable19  ;; VIC_SpuriousInt
   \   00000004   0021               MOVS     R1,#+0
   \   00000006   0160               STR      R1,[R0, #+0]
    447              VIC_Dummy();
   \   00000008   ........           BL       VIC_Dummy
    448          }
   \   0000000C   01BC               POP      {R0}
   \   0000000E   0047               BX       R0               ;; return
    449          
    450          

   \                                 In segment CODE, align 4, keep-with-next
    451          void  VIC_DummyTIMER0 (void)
    452          {
   \                     VIC_DummyTIMER0:
   \   00000000   00B5               PUSH     {LR}
    453              VIC_SpuriousInt = VIC_TIMER0;
   \   00000002   ....               LDR      R0,??DataTable19  ;; VIC_SpuriousInt
   \   00000004   0421               MOVS     R1,#+4
   \   00000006   0160               STR      R1,[R0, #+0]
    454              VIC_Dummy();
   \   00000008   ........           BL       VIC_Dummy
    455          }
   \   0000000C   01BC               POP      {R0}
   \   0000000E   0047               BX       R0               ;; return
    456          
    457          

   \                                 In segment CODE, align 4, keep-with-next
    458          void  VIC_DummyTIMER1 (void)
    459          {
   \                     VIC_DummyTIMER1:
   \   00000000   00B5               PUSH     {LR}
    460              VIC_SpuriousInt = VIC_TIMER1;
   \   00000002   ....               LDR      R0,??DataTable19  ;; VIC_SpuriousInt
   \   00000004   0521               MOVS     R1,#+5
   \   00000006   0160               STR      R1,[R0, #+0]
    461              VIC_Dummy();
   \   00000008   ........           BL       VIC_Dummy
    462          }
   \   0000000C   01BC               POP      {R0}
   \   0000000E   0047               BX       R0               ;; return
    463          
    464          

   \                                 In segment CODE, align 4, keep-with-next
    465          void  VIC_DummyUART0 (void)
    466          {
   \                     VIC_DummyUART0:
   \   000000

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -