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

📄 main.lst

📁 ARM仿真案例
💻 LST
字号:
##############################################################################
#                                                                            #
# IAR ARM ANSI C/C++ Compiler V4.40A/W32 EVALUATION    21/Jul/2006  22:52:56 #
# Copyright 1999-2005 IAR Systems. All rights reserved.                      #
# Time limited license: 21 days left                                         #
#                                                                            #
#    Cpu mode        =  interwork                                            #
#    Endian          =  little                                               #
#    Stack alignment =  4                                                    #
#    Source file     =  E:\Project\ucos-ii\pwm\App\main.C                    #
#    Command line    =  E:\Project\ucos-ii\pwm\App\main.C -lCN               #
#                       E:\Project\ucos-ii\pwm\Debug\List\ -lA               #
#                       E:\Project\ucos-ii\pwm\Debug\List\ -o                #
#                       E:\Project\ucos-ii\pwm\Debug\Obj\ -z3 --no_cse       #
#                       --no_unroll --no_inline --no_code_motion --no_tbaa   #
#                       --no_clustering --no_scheduling --debug --cpu_mode   #
#                       thumb --endian little --cpu ARM7TDMI-S               #
#                       --stack_align 4 --interwork -e --fpu None            #
#                       --dlib_config "E:\Program Files\IAR                  #
#                       Systems\Embedded Workbench 4.0                       #
#                       Evaluation\ARM\LIB\dl4tptinl8n.h" -I                 #
#                       E:\Project\ucos-ii\pwm\ -I                           #
#                       E:\Project\ucos-ii\pwm\App\ -I                       #
#                       E:\Project\ucos-ii\pwm\ARM\ -I                       #
#                       E:\Project\ucos-ii\pwm\BSP\ -I                       #
#                       E:\Project\ucos-ii\pwm\uCOS-II\ -I "E:\Program       #
#                       Files\IAR Systems\Embedded Workbench 4.0             #
#                       Evaluation\ARM\INC\"                                 #
#    List file       =  E:\Project\ucos-ii\pwm\Debug\List\main.lst           #
#    Object file     =  E:\Project\ucos-ii\pwm\Debug\Obj\main.r79            #
#                                                                            #
#                                                                            #
##############################################################################

E:\Project\ucos-ii\pwm\App\main.C
      1          /*******************************************************************************
      2          *File: Main.c
      3          *功能: 使用PWM6输出PWM信号,由KEY1控制PWM占空比,每按一次
      4          *      按键将会改变一次PWM的占空比
      5          *******************************************************************************/
      6          
      7          #include <includes.h>

   \                                 In segment DATA_AN, at 0xe002c000
   \   union <unnamed> volatile __data _A_PINSEL0
   \                     _A_PINSEL0:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe002c004
   \   union <unnamed> volatile __data _A_PINSEL1
   \                     _A_PINSEL1:
   \   00000000                      DS8 4

   \                                 In segment DATA_AN, at 0xe0028000
   \   union <unnamed> const volatile __data _A_IOPIN
   \                     _A_IOPIN:
   \   00000000                      DS8 4
      8          #define   KEY1   0x00004000        /*P0.14引脚连接KEY1*/
      9          #define  TASK_STK_SIZE                  64
     10          

   \                                 In segment DATA_Z, align 4, align-sorted
     11          OS_STK        Main_TaskStk[TASK_STK_SIZE];
   \                     Main_TaskStk:
   \   00000000                      DS8 256

   \                                 In segment DATA_Z, align 4, align-sorted
     12          OS_STK        Task0Stk[TASK_STK_SIZE];
   \                     Task0Stk:
   \   00000000                      DS8 256
     13          
     14          
     15          void Main_Task(void *data);
     16          void Task0(void *data);
     17          /*******************************************************************************
     18          *名称: main()
     19          *功能: 主函数,包括任务初始化及任务建立
     20          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     21            int main (void)
     22          {
   \                     main:
   \   00000000   00B5               PUSH     {LR}
     23              OSInit();
   \   00000002   ........           _BLF     OSInit,??OSInit??rT
     24          
     25              OSTaskCreate(Main_Task, (void *)0, &Main_TaskStk[TASK_STK_SIZE - 1], 0);
   \   00000006   0023               MOVS     R3,#+0
   \   00000008   044A               LDR      R2,??main_0      ;; Main_TaskStk + 252
   \   0000000A   0021               MOVS     R1,#+0
   \   0000000C   0448               LDR      R0,??main_0+0x4  ;; Main_Task
   \   0000000E   ........           _BLF     OSTaskCreate,??OSTaskCreate??rT
     26              OSStart();
   \   00000012   ........           _BLF     OSStart,??OSStart??rT
     27              return 0;
   \   00000016   0020               MOVS     R0,#+0
   \   00000018   02BC               POP      {R1}
   \   0000001A   0847               BX       R1               ;; return
   \                     ??main_0:
   \   0000001C   ........           DC32     Main_TaskStk + 252
   \   00000020   ........           DC32     Main_Task
     28          }
     29          
     30          /*******************************************************************************
     31          *名称: Main_Task()
     32          *功能: 主任务,输出PWM
     33          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     34           void  Main_Task(void *pdata)
     35          { INT32U  pwmdata;       //PWM占空比控制变量
   \                     Main_Task:
   \   00000000   10B5               PUSH     {R4,LR}
   \   00000002   0400               MOVS     R4,R0
     36            pdata=pdata;                      
     37            PINSEL0=0x00080000;                     //设置PWM6连接到P0.9引脚
   \   00000004   0E48               LDR      R0,??Main_Task_0  ;; 0xe002c000
   \   00000006   8021               MOVS     R1,#+128
   \   00000008   0903               LSLS     R1,R1,#+12       ;; #+524288
   \   0000000A   0160               STR      R1,[R0, #+0]
     38            PINSEL1=0x00000000;                     //其他引脚设置为GPIO
   \   0000000C   0D48               LDR      R0,??Main_Task_0+0x4  ;; 0xe002c004
   \   0000000E   0021               MOVS     R1,#+0
   \   00000010   0160               STR      R1,[R0, #+0]
     39            BSP_Init();                           //目标板初始化
   \   00000012   ........           _BLF     BSP_Init,??BSP_Init??rT
     40            OSTaskCreate(Task0, (void *)0, &Task0Stk[TASK_STK_SIZE - 1],2);
   \   00000016   0223               MOVS     R3,#+2
   \   00000018   0B4A               LDR      R2,??Main_Task_0+0x8  ;; Task0Stk + 252
   \   0000001A   0021               MOVS     R1,#+0
   \   0000001C   0B48               LDR      R0,??Main_Task_0+0xC  ;; Task0
   \   0000001E   ........           _BLF     OSTaskCreate,??OSTaskCreate??rT
     41            
     42            pwmdata=1382;
   \   00000022   0B48               LDR      R0,??Main_Task_0+0x10  ;; 0x566
     43            while(1)
     44            {  PWMMR0=2765;                         //设置PWM周期
   \                     ??Main_Task_1:
   \   00000024   0B49               LDR      R1,??Main_Task_0+0x14  ;; 0xe0014018
   \   00000026   0C4A               LDR      R2,??Main_Task_0+0x18  ;; 0xacd
   \   00000028   0A60               STR      R2,[R1, #+0]
     45               PWMMR6=pwmdata;                      //设置PWM占空比
   \   0000002A   0C49               LDR      R1,??Main_Task_0+0x1C  ;; 0xe0014048
   \   0000002C   0860               STR      R0,[R1, #+0]
     46               PWMLER=0x41;                         //PWMMR0,PWMMR6锁存,更新PWM占空比
   \   0000002E   0C49               LDR      R1,??Main_Task_0+0x20  ;; 0xe0014050
   \   00000030   4122               MOVS     R2,#+65
   \   00000032   0A60               STR      R2,[R1, #+0]
     47               //OSTaskSuspend(OS_PRIO_SELF);                          
     48               pwmdata+=100;                        //改变PWM占空比控制变量
   \   00000034   6430               ADDS     R0,R0,#+100
     49               if(pwmdata>=2764)pwmdata=0;
   \   00000036   0B49               LDR      R1,??Main_Task_0+0x24  ;; 0xacc
   \   00000038   8842               CMP      R0,R1
   \   0000003A   F3D3               BCC      ??Main_Task_1
   \   0000003C   0020               MOVS     R0,#+0
   \   0000003E   F1E7               B        ??Main_Task_1
   \                     ??Main_Task_0:
   \   00000040   00C002E0           DC32     0xe002c000
   \   00000044   04C002E0           DC32     0xe002c004
   \   00000048   ........           DC32     Task0Stk + 252
   \   0000004C   ........           DC32     Task0
   \   00000050   66050000           DC32     0x566
   \   00000054   184001E0           DC32     0xe0014018
   \   00000058   CD0A0000           DC32     0xacd
   \   0000005C   484001E0           DC32     0xe0014048
   \   00000060   504001E0           DC32     0xe0014050
   \   00000064   CC0A0000           DC32     0xacc
     50            }
     51            
     52          }
     53          /*******************************************************************************
     54          *名称: Task0()
     55          *功能: 按键控制
     56          *******************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
     57          void Task0(void *pdata)
     58          { INT32U i;
   \                     Task0:
   \   00000000   00B5               PUSH     {LR}
     59            pdata=pdata;
     60            while(1)
     61            { while((IOPIN&KEY1)!=0);                 //等待KEY1键按下
   \                     ??Task0_0:
   \   00000002   0948               LDR      R0,??Task0_1     ;; 0xe0028000
   \   00000004   0068               LDR      R0,[R0, #+0]
   \   00000006   4004               LSLS     R0,R0,#+17
   \   00000008   FBD4               BMI      ??Task0_0
     62              for(i=0;i<50;i++);                      //延时去抖
   \   0000000A   0020               MOVS     R0,#+0
   \   0000000C   00E0               B        ??Task0_2
   \                     ??Task0_3:
   \   0000000E   401C               ADDS     R0,R0,#+1
   \                     ??Task0_2:
   \   00000010   3228               CMP      R0,#+50
   \   00000012   FCD3               BCC      ??Task0_3
     63              if((IOPIN&KEY1)==0)break;
   \   00000014   0448               LDR      R0,??Task0_1     ;; 0xe0028000
   \   00000016   0068               LDR      R0,[R0, #+0]
   \   00000018   4004               LSLS     R0,R0,#+17
   \   0000001A   F2D4               BMI      ??Task0_0
     64            }
     65              //OSTaskResume(0);
     66              while((IOPIN&KEY1)==0);                   //等待KEY1键放开
   \                     ??Task0_4:
   \   0000001C   0248               LDR      R0,??Task0_1     ;; 0xe0028000
   \   0000001E   0068               LDR      R0,[R0, #+0]
   \   00000020   4004               LSLS     R0,R0,#+17
   \   00000022   FBD5               BPL      ??Task0_4
     67          }
   \   00000024   01BC               POP      {R0}
   \   00000026   0047               BX       R0               ;; return
   \                     ??Task0_1:
   \   00000028   008002E0           DC32     0xe0028000
     68          

   Maximum stack usage in bytes:

     Function  CSTACK
     --------  ------
     Main_Task     8
     Task0         4
     main          4


   Segment part sizes:

     Function/Label Bytes
     -------------- -----
     _A_PINSEL0        4
     _A_PINSEL1        4
     _A_IOPIN          4
     Main_TaskStk    256
     Task0Stk        256
     main             36
     Main_Task       104
     Task0            44
      Others          76

 
 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 + -