📄 main.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 + -