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

📄 bsp.s79

📁 ARM仿真案例
💻 S79
📖 第 1 页 / 共 5 页
字号:
??LED_On_11:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+64
        B.N      ??LED_On_4
//  173              break;
//  174 
//  175         case 8:
//  176              IOSET = 1 << 7;
??LED_On_12:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+128
        B.N      ??LED_On_4
//  177              break;
//  178 
//  179         case 9:
//  180              IOSET = 1 << 8;
??LED_On_13:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+128
        LSLS     R1,R1,#+1        ;; #+256
        B.N      ??LED_On_4
//  181              break;
//  182 
//  183         case 10:
//  184              IOSET = 1 << 9;
??LED_On_14:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+128
        LSLS     R1,R1,#+2        ;; #+512
        B.N      ??LED_On_4
//  185              break;
//  186 
//  187         case 11:
//  188              IOSET = 1 << 10;
??LED_On_15:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+128
        LSLS     R1,R1,#+3        ;; #+1024
        B.N      ??LED_On_4
//  189              break;
//  190 
//  191         case 12:
//  192              IOSET = 1 << 11;
??LED_On_16:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+128
        LSLS     R1,R1,#+4        ;; #+2048
        B.N      ??LED_On_4
//  193              break;
//  194 
//  195         case 13:
//  196              IOSET = 1 << 12;
??LED_On_17:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+128
        LSLS     R1,R1,#+5        ;; #+4096
        B.N      ??LED_On_4
//  197              break;
//  198 
//  199         case 14:
//  200              IOSET = 1 << 13;
??LED_On_18:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+128
        LSLS     R1,R1,#+6        ;; #+8192
        B.N      ??LED_On_4
//  201              break;
//  202 
//  203         case 15:
//  204              IOSET = 1 << 14;
??LED_On_19:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+128
        LSLS     R1,R1,#+7        ;; #+16384
        B.N      ??LED_On_4
//  205              break;
//  206 
//  207         case 16:
//  208              IOSET = 1 << 15;
??LED_On_20:
        LDR      R0,??LED_On_3    ;; 0xe0028004
        MOVS     R1,#+128
        LSLS     R1,R1,#+8        ;; #+32768
??LED_On_4:
        STR      R1,[R0, #+0]
//  209              break;
//  210     }
//  211 }
??LED_On_1:
        POP      {R0}
        BX       R0               ;; return
        DATA
??LED_On_3:
        DC32     0xe0028004
        CFI EndBlock cfiBlock5

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock6 Using cfiCommon0
        CFI NoFunction
        ARM
??LED_Off??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock6
        REQUIRE LED_Off
//  212 
//  213 /*
//  214 *********************************************************************************************************
//  215 *                                             LED OFF
//  216 *
//  217 * Description : This function is used to control any or all the LEDs on the board.
//  218 *               
//  219 * Arguments   : led    is the number of the LED to turn OFF
//  220 *                      0    indicates that you want ALL the LEDs to be OFF
//  221 *                      1    turns OFF LED1 on the board
//  222 *                      .
//  223 *                      .
//  224 *                      8    turns OFF LED8 on the board
//  225 *********************************************************************************************************
//  226 */
//  227 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock7 Using cfiCommon1
        CFI Function LED_Off
        THUMB
//  228 void  LED_Off (INT8U led)
//  229 {
LED_Off:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//  230     switch (led) {
        CMP      R0,#+16
        BHI      ??LED_Off_1
        ADR      R1,??LED_Off_0
        LDRB     R1,[R1, R0]
        ADD      PC,PC,R1
        DATA
??LED_Off_0:
        DC8      +16,+22,+28,+34
        DC8      +40,+46,+52,+58
        DC8      +64,+70,+78,+86
        DC8      +94,+102,+110,+118
        DC8      +126,+0
        THUMB
//  231         case 0:
//  232              IOCLR = 0x0000FFFF;
??LED_Off_2:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        LDR      R1,??DataTable2  ;; 0xffff
        B.N      ??LED_Off_4
//  233              break;
//  234 
//  235         case 1:
//  236              IOCLR = 1 << 0;
??LED_Off_5:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+1
        B.N      ??LED_Off_4
//  237              break;
//  238 
//  239         case 2:
//  240              IOCLR = 1 << 1;
??LED_Off_6:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+2
        B.N      ??LED_Off_4
//  241              break;
//  242 
//  243         case 3:
//  244              IOCLR = 1 << 2;
??LED_Off_7:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+4
        B.N      ??LED_Off_4
//  245              break;
//  246 
//  247         case 4:
//  248              IOCLR = 1 << 3;
??LED_Off_8:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+8
        B.N      ??LED_Off_4
//  249              break;
//  250 
//  251         case 5:
//  252              IOCLR = 1 << 4;
??LED_Off_9:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+16
        B.N      ??LED_Off_4
//  253              break;
//  254 
//  255         case 6:
//  256              IOCLR = 1 << 5;
??LED_Off_10:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+32
        B.N      ??LED_Off_4
//  257              break;
//  258 
//  259         case 7:
//  260              IOCLR = 1 << 6;
??LED_Off_11:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+64
        B.N      ??LED_Off_4
//  261              break;
//  262 
//  263         case 8:
//  264              IOCLR = 1 << 7;
??LED_Off_12:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+128
        B.N      ??LED_Off_4
//  265              break;
//  266 
//  267         case 9:
//  268              IOCLR = 1 << 8;
??LED_Off_13:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+128
        LSLS     R1,R1,#+1        ;; #+256
        B.N      ??LED_Off_4
//  269              break;
//  270 
//  271         case 10:
//  272              IOCLR = 1 << 9;
??LED_Off_14:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+128
        LSLS     R1,R1,#+2        ;; #+512
        B.N      ??LED_Off_4
//  273              break;
//  274 
//  275         case 11:
//  276              IOCLR = 1 << 10;
??LED_Off_15:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+128
        LSLS     R1,R1,#+3        ;; #+1024
        B.N      ??LED_Off_4
//  277              break;
//  278 
//  279         case 12:
//  280              IOCLR = 1 << 11;
??LED_Off_16:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+128
        LSLS     R1,R1,#+4        ;; #+2048
        B.N      ??LED_Off_4
//  281              break;
//  282 
//  283         case 13:
//  284              IOCLR = 1 << 12;
??LED_Off_17:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+128
        LSLS     R1,R1,#+5        ;; #+4096
        B.N      ??LED_Off_4
//  285              break;
//  286 
//  287         case 14:
//  288              IOCLR = 1 << 13;
??LED_Off_18:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+128
        LSLS     R1,R1,#+6        ;; #+8192
        B.N      ??LED_Off_4
//  289              break;
//  290 
//  291         case 15:
//  292              IOCLR = 1 << 14;
??LED_Off_19:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+128
        LSLS     R1,R1,#+7        ;; #+16384
        B.N      ??LED_Off_4
//  293              break;
//  294 
//  295         case 16:
//  296              IOCLR = 1 << 15;
??LED_Off_20:
        LDR      R0,??LED_Off_3   ;; 0xe002800c
        MOVS     R1,#+128
        LSLS     R1,R1,#+8        ;; #+32768
??LED_Off_4:
        STR      R1,[R0, #+0]
//  297              break;
//  298     }
//  299 }
??LED_Off_1:
        POP      {R0}
        BX       R0               ;; return
        DATA
??LED_Off_3:
        DC32     0xe002800c
        CFI EndBlock cfiBlock7

        RSEG CODE:CODE:NOROOT(2)
        DATA
??DataTable2:
        DC32     0xffff

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock8 Using cfiCommon0
        CFI NoFunction
        ARM
??Tmr_TickInit??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock8
        REQUIRE Tmr_TickInit
//  300 
//  301 /*
//  302 *********************************************************************************************************
//  303 *                                       TICKER INITIALIZATION
//  304 *
//  305 * Description : This function is called to initialize uC/OS-II's tick source (typically a timer generating
//  306 *               interrupts every 1 to 100 mS).
//  307 *               
//  308 * Arguments   : none
//  309 *********************************************************************************************************
//  310 */
//  311 

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock9 Using cfiCommon1
        CFI Function Tmr_TickInit
        THUMB
//  312 void  Tmr_TickInit (void)
//  313 {
//  314                                                  /* VIC TIMER #0 Initialization                        */
//  315     VICIntSelect &= ~(1 << VIC_TIMER0);          /* Enable interrupts                                  */
Tmr_TickInit:
        LDR      R0,??Tmr_TickInit_0  ;; 0xfffff00c
        LDR      R1,[R0, #+0]
        MOVS     R2,#+16
        BICS     R1,R1,R2
        STR      R1,[R0, #+0]
//  316     VICVectAddr2  = (INT32U)Tmr_TickISR_Handler; /* Set the vector address                             */
        LDR      R0,??DataTable7  ;; 0xfffff108
        LDR      R1,??Tmr_TickInit_0+0x4  ;; Tmr_TickISR_Handler
        STR      R1,[R0, #+0]
//  317     VICVectCntl2  = 0x20 | VIC_TIMER0;           /* Enable vectored interrupts                         */
        LDR      R0,??Tmr_TickInit_0+0x8  ;; 0xfffff208
        MOVS     R1,#+36
        STR      R1,[R0, #+0]
//  318     VICIntEnable  =  (1 << VIC_TIMER0);          /* Enable Interrupts                                  */
        LDR      R0,??Tmr_TickInit_0+0xC  ;; 0xfffff010
        STR      R2,[R0, #+0]
//  319 
//  320     T0TCR         = 0;                           /* Disable timer 0.                                   */
        LDR      R0,??Tmr_TickInit_0+0x10  ;; 0xe0004004
        MOVS     R1,#+0
        STR      R1,[R0, #+0]
//  321     T0PC          = 0;                           /* Prescaler is set to no division.                   */
        LDR      R0,??Tmr_TickInit_0+0x14  ;; 0xe0004010
        STR      R1,[R0, #+0]
//  322     T0MR0         = CPU_PERIPHERAL_CLK_FREQ / OS_TICKS_PER_SEC;  /* Count up to this value.            */
        LDR      R0,??Tmr_TickInit_0+0x18  ;; 0xe0004018
        MOVS     R1,#+144
        LSLS     R1,R1,#+8        ;; #+36864
        STR      R1,[R0, #+0]
//  323     T0MCR         = 3;                           /* Reset and interrupt on MR0 (match register 0).     */
        LDR      R0,??Tmr_TickInit_0+0x1C  ;; 0xe0004014
        MOVS     R1,#+3
        STR      R1,[R0, #+0]
//  324     T0CCR         = 0;                           /* Capture is disabled.                               */
        LDR      R0,??Tmr_TickInit_0+0x20  ;; 0xe0004028
        MOVS     R1,#+0
        STR      R1,[R0, #+0]
//  325     T0EMR         = 0;                           /* No external match output.                          */
        LDR      R0,??Tmr_TickInit_0+0x24  ;; 0xe000403c
        STR      R1,[R0, #+0]
//  326     T0TCR         = 1;                           /* Enable timer 0                                     */
        LDR      R0,??Tmr_TickInit_0+0x10  ;; 0xe0004004
        MOVS     R1,#+1
        STR      R1,[R0, #+0]
//  327 }
        BX       LR               ;; return
        DATA
??Tmr_TickInit_0:
        DC32     0xfffff00c
        DC32     Tmr_TickISR_Handler
        DC32     0xfffff208

⌨️ 快捷键说明

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