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

📄 bsp.lst

📁 ARM仿真案例
💻 LST
📖 第 1 页 / 共 5 页
字号:
     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 + -