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

📄 main.s79

📁 ARM仿真案例
💻 S79
📖 第 1 页 / 共 2 页
字号:
        DATA
??main_0:
        DC32     Main_TaskStk + 252
        DC32     Main_Task
        CFI EndBlock cfiBlock1
//   28 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock2 Using cfiCommon0
        CFI NoFunction
        ARM
??Main_Task??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock2
        REQUIRE Main_Task
//   29 
//   30 /*******************************************************************************
//   31 *名称: Main_Task()
//   32 *功能: 主任务,输出PWM
//   33 *******************************************************************************/

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock3 Using cfiCommon1
        CFI Function Main_Task
        THUMB
//   34  void  Main_Task(void *pdata)
//   35 { INT32U  pwmdata;       //PWM占空比控制变量
Main_Task:
        PUSH     {R4,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
        MOVS     R4,R0
//   36   pdata=pdata;                      
//   37   PINSEL0=0x00080000;                     //设置PWM6连接到P0.9引脚
        LDR      R0,??Main_Task_0  ;; 0xe002c000
        MOVS     R1,#+128
        LSLS     R1,R1,#+12       ;; #+524288
        STR      R1,[R0, #+0]
//   38   PINSEL1=0x00000000;                     //其他引脚设置为GPIO
        LDR      R0,??Main_Task_0+0x4  ;; 0xe002c004
        MOVS     R1,#+0
        STR      R1,[R0, #+0]
//   39   BSP_Init();                           //目标板初始化
        _BLF     BSP_Init,??BSP_Init??rT
//   40   OSTaskCreate(Task0, (void *)0, &Task0Stk[TASK_STK_SIZE - 1],2);
        MOVS     R3,#+2
        LDR      R2,??Main_Task_0+0x8  ;; Task0Stk + 252
        MOVS     R1,#+0
        LDR      R0,??Main_Task_0+0xC  ;; Task0
        _BLF     OSTaskCreate,??OSTaskCreate??rT
//   41   
//   42   pwmdata=1382;
        LDR      R0,??Main_Task_0+0x10  ;; 0x566
//   43   while(1)
//   44   {  PWMMR0=2765;                         //设置PWM周期
??Main_Task_1:
        LDR      R1,??Main_Task_0+0x14  ;; 0xe0014018
        LDR      R2,??Main_Task_0+0x18  ;; 0xacd
        STR      R2,[R1, #+0]
//   45      PWMMR6=pwmdata;                      //设置PWM占空比
        LDR      R1,??Main_Task_0+0x1C  ;; 0xe0014048
        STR      R0,[R1, #+0]
//   46      PWMLER=0x41;                         //PWMMR0,PWMMR6锁存,更新PWM占空比
        LDR      R1,??Main_Task_0+0x20  ;; 0xe0014050
        MOVS     R2,#+65
        STR      R2,[R1, #+0]
//   47      //OSTaskSuspend(OS_PRIO_SELF);                          
//   48      pwmdata+=100;                        //改变PWM占空比控制变量
        ADDS     R0,R0,#+100
//   49      if(pwmdata>=2764)pwmdata=0;
        LDR      R1,??Main_Task_0+0x24  ;; 0xacc
        CMP      R0,R1
        BCC      ??Main_Task_1
        MOVS     R0,#+0
        B        ??Main_Task_1
        DATA
??Main_Task_0:
        DC32     0xe002c000
        DC32     0xe002c004
        DC32     Task0Stk + 252
        DC32     Task0
        DC32     0x566
        DC32     0xe0014018
        DC32     0xacd
        DC32     0xe0014048
        DC32     0xe0014050
        DC32     0xacc
        CFI EndBlock cfiBlock3
//   50   }
//   51   
//   52 }

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock4 Using cfiCommon0
        CFI NoFunction
        ARM
??Task0??rA:
        ADD      R12,PC,#+1
        BX       R12
        CFI EndBlock cfiBlock4
        REQUIRE Task0
//   53 /*******************************************************************************
//   54 *名称: Task0()
//   55 *功能: 按键控制
//   56 *******************************************************************************/

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock5 Using cfiCommon1
        CFI Function Task0
        THUMB
//   57 void Task0(void *pdata)
//   58 { INT32U i;
Task0:
        PUSH     {LR}
        CFI ?RET Frame(CFA, -4)
        CFI CFA R13+4
//   59   pdata=pdata;
//   60   while(1)
//   61   { while((IOPIN&KEY1)!=0);                 //等待KEY1键按下
??Task0_0:
        LDR      R0,??Task0_1     ;; 0xe0028000
        LDR      R0,[R0, #+0]
        LSLS     R0,R0,#+17
        BMI      ??Task0_0
//   62     for(i=0;i<50;i++);                      //延时去抖
        MOVS     R0,#+0
        B        ??Task0_2
??Task0_3:
        ADDS     R0,R0,#+1
??Task0_2:
        CMP      R0,#+50
        BCC      ??Task0_3
//   63     if((IOPIN&KEY1)==0)break;
        LDR      R0,??Task0_1     ;; 0xe0028000
        LDR      R0,[R0, #+0]
        LSLS     R0,R0,#+17
        BMI      ??Task0_0
//   64   }
//   65     //OSTaskResume(0);
//   66     while((IOPIN&KEY1)==0);                   //等待KEY1键放开
??Task0_4:
        LDR      R0,??Task0_1     ;; 0xe0028000
        LDR      R0,[R0, #+0]
        LSLS     R0,R0,#+17
        BPL      ??Task0_4
//   67 }
        POP      {R0}
        BX       R0               ;; return
        DATA
??Task0_1:
        DC32     0xe0028000
        CFI EndBlock cfiBlock5

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock6 Using cfiCommon1
        CFI NoFunction
        THUMB
??OSInit??rT:
        LDR      R3,??Subroutine3_0  ;; OSInit
        BX       R3
        DATA
??Subroutine3_0:
        DC32     OSInit
        CFI EndBlock cfiBlock6

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock7 Using cfiCommon1
        CFI NoFunction
        THUMB
??OSTaskCreate??rT:
        PUSH     {R3}
        CFI CFA R13+4
        LDR      R3,??Subroutine4_0  ;; OSTaskCreate
        MOV      R12,R3
        POP      {R3}
        CFI CFA R13+0
        BX       R12
        Nop      
        DATA
??Subroutine4_0:
        DC32     OSTaskCreate
        CFI EndBlock cfiBlock7

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock8 Using cfiCommon1
        CFI NoFunction
        THUMB
??OSStart??rT:
        LDR      R3,??Subroutine5_0  ;; OSStart
        BX       R3
        DATA
??Subroutine5_0:
        DC32     OSStart
        CFI EndBlock cfiBlock8

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock9 Using cfiCommon1
        CFI NoFunction
        THUMB
??BSP_Init??rT:
        LDR      R3,??Subroutine6_0  ;; BSP_Init
        BX       R3
        DATA
??Subroutine6_0:
        DC32     BSP_Init
        CFI EndBlock cfiBlock9

        RSEG INITTAB:CODE:ROOT(2)
        DATA
?init?tab?DATA_Z:
        DCD      sfe(DATA_Z) - sfb(DATA_Z), sfb(DATA_Z), sfb(DATA_Z)

        END
//   68 
// 
// 248 bytes in segment CODE
//  12 bytes in segment DATA_AN
// 512 bytes in segment DATA_Z
//  12 bytes in segment INITTAB
// 
// 184 bytes of CODE memory (+ 76 bytes shared)
// 512 bytes of DATA memory (+ 12 bytes shared)
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

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