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

📄 app.txt

📁 IARSOURCECODE是基于LPC2478嵌入式软件IAR EWARM V4.42的应用实例代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -oapp.o --depend=app.d --device=DARMP --apcs=interwork -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\ARM\Generic\RVMDK -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\ARM\RVMDK -I..\..\..\..\..\uC-LIB -I..\..\..\..\..\uCOSView\Source -I..\..\..\..\..\uCOSView\Ports\ARM7\LPC2468\IAR -Id:\Keil\ARM\INC\Philips app.c]
                          ARM

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  AppTaskKbd PROC
;;;213    static  void  AppTaskKbd (void *p_arg)
;;;214    {
000000  e92d5ff0          PUSH     {r4-r12,lr}
;;;215        CPU_BOOLEAN  b1;                                            /* State of Push Button #1                                  */
;;;216        CPU_BOOLEAN  b1_prev;
;;;217        CPU_BOOLEAN  b2;                                            /* State of Push Button #2                                  */
;;;218        CPU_BOOLEAN  b2_prev;
;;;219        CPU_BOOLEAN  b3;                                            /* State of Push Button #3                                  */
;;;220        CPU_BOOLEAN  b3_prev;
;;;221        CPU_BOOLEAN  b4;                                            /* State of Push Button #4                                  */
;;;222        CPU_BOOLEAN  b4_prev;
;;;223    
;;;224    
;;;225        (void)p_arg;
;;;226    
;;;227        b1_prev     = DEF_FALSE;
000004  e3a05000          MOV      r5,#0
;;;228        b2_prev     = DEF_FALSE;
000008  e3a07000          MOV      r7,#0
;;;229        b3_prev     = DEF_FALSE;
00000c  e3a09000          MOV      r9,#0
;;;230        b4_prev     = DEF_FALSE;
000010  e3a0b000          MOV      r11,#0
;;;231    
;;;232        while (DEF_TRUE) {
000014  ea000031          B        |L1.224|
                  |L1.24|
;;;233    
;;;234            b1      = PB_GetStatus(1);
000018  e3a00001          MOV      r0,#1
00001c  ebfffffe          BL       PB_GetStatus
000020  e1a04000          MOV      r4,r0
;;;235            b2      = PB_GetStatus(2);
000024  e3a00002          MOV      r0,#2
000028  ebfffffe          BL       PB_GetStatus
00002c  e1a06000          MOV      r6,r0
;;;236            b3      = PB_GetStatus(3);
000030  e3a00003          MOV      r0,#3
000034  ebfffffe          BL       PB_GetStatus
000038  e1a08000          MOV      r8,r0
;;;237            b4      = PB_GetStatus(4);
00003c  e3a00004          MOV      r0,#4
000040  ebfffffe          BL       PB_GetStatus
000044  e1a0a000          MOV      r10,r0
;;;238    
;;;239            if (b1 == DEF_TRUE && b1_prev == DEF_FALSE) {
000048  e3540001          CMP      r4,#1
00004c  1a000005          BNE      |L1.104|
000050  e3550000          CMP      r5,#0
000054  1a000003          BNE      |L1.104|
;;;240    
;;;241                OSQPost(AppKbdQ, (CPU_INT32U *)1);
000058  e3a01001          MOV      r1,#1
00005c  e59f02d0          LDR      r0,|L1.820|
000060  e5900000          LDR      r0,[r0,#0]  ; AppKbdQ
000064  ebfffffe          BL       OSQPost
                  |L1.104|
;;;242            }
;;;243    
;;;244            if (b2 == DEF_TRUE && b2_prev == DEF_FALSE) {
000068  e3560001          CMP      r6,#1
00006c  1a000005          BNE      |L1.136|
000070  e3570000          CMP      r7,#0
000074  1a000003          BNE      |L1.136|
;;;245    
;;;246                OSQPost(AppKbdQ, (CPU_INT32U *)2);
000078  e3a01002          MOV      r1,#2
00007c  e59f02b0          LDR      r0,|L1.820|
000080  e5900000          LDR      r0,[r0,#0]  ; AppKbdQ
000084  ebfffffe          BL       OSQPost
                  |L1.136|
;;;247            }
;;;248    
;;;249            if (b3 == DEF_TRUE && b3_prev == DEF_FALSE) {
000088  e3580001          CMP      r8,#1
00008c  1a000005          BNE      |L1.168|
000090  e3590000          CMP      r9,#0
000094  1a000003          BNE      |L1.168|
;;;250    
;;;251                OSQPost(AppKbdQ, (CPU_INT32U *)3);
000098  e3a01003          MOV      r1,#3
00009c  e59f0290          LDR      r0,|L1.820|
0000a0  e5900000          LDR      r0,[r0,#0]  ; AppKbdQ
0000a4  ebfffffe          BL       OSQPost
                  |L1.168|
;;;252            }
;;;253    
;;;254            if (b4 == DEF_TRUE && b4_prev == DEF_FALSE) {
0000a8  e35a0001          CMP      r10,#1
0000ac  1a000005          BNE      |L1.200|
0000b0  e35b0000          CMP      r11,#0
0000b4  1a000003          BNE      |L1.200|
;;;255    
;;;256                OSQPost(AppKbdQ, (CPU_INT32U *)4);
0000b8  e3a01004          MOV      r1,#4
0000bc  e59f0270          LDR      r0,|L1.820|
0000c0  e5900000          LDR      r0,[r0,#0]  ; AppKbdQ
0000c4  ebfffffe          BL       OSQPost
                  |L1.200|
;;;257            }
;;;258    
;;;259            b1_prev = b1;
0000c8  e1a05004          MOV      r5,r4
;;;260            b2_prev = b2;
0000cc  e1a07006          MOV      r7,r6
;;;261            b3_prev = b3;
0000d0  e1a09008          MOV      r9,r8
;;;262            b4_prev = b4;
0000d4  e1a0b00a          MOV      r11,r10
;;;263    
;;;264            OSTimeDly(OS_TICKS_PER_SEC / 10);
0000d8  e3a00064          MOV      r0,#0x64
0000dc  ebfffffe          BL       OSTimeDly
                  |L1.224|
0000e0  eaffffcc          B        |L1.24|
;;;265    
;;;266        }
;;;267    }
                          ENDP

                  AppTaskCreate PROC
;;;282    static  void  AppTaskCreate (void)
;;;283    {
0000e4  e52de004          PUSH     {lr}
0000e8  e24dd01c          SUB      sp,sp,#0x1c
;;;284        CPU_INT08U      err;
;;;285    
;;;286    
;;;287        OSTaskCreateExt(AppTaskKbd,
0000ec  e3a03003          MOV      r3,#3
0000f0  e3a02000          MOV      r2,#0
0000f4  e3a01c02          MOV      r1,#0x200
0000f8  e59f0238          LDR      r0,|L1.824|
0000fc  e98d000f          STMIB    sp,{r0-r3}
000100  e3a03002          MOV      r3,#2
000104  e59f2230          LDR      r2,|L1.828|
000108  e3a01000          MOV      r1,#0
00010c  e24f0f45          ADR      r0,AppTaskKbd
000110  e58d3000          STR      r3,[sp,#0]
000114  ebfffffe          BL       OSTaskCreateExt
;;;288                        (void *)0,
;;;289                        (OS_STK *)&AppTaskKbdStk[APP_TASK_KBD_STK_SIZE - 1],
;;;290                        APP_TASK_KBD_PRIO,
;;;291                        APP_TASK_KBD_PRIO,
;;;292                        (OS_STK *)&AppTaskKbdStk[0],
;;;293                        APP_TASK_KBD_STK_SIZE,
;;;294                        (void *)0,
;;;295                        OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
;;;296    
;;;297    #if OS_TASK_NAME_SIZE > 9
;;;298        OSTaskNameSet(APP_TASK_KBD_PRIO, "Keyboard", &err);
000118  e28d2018          ADD      r2,sp,#0x18
00011c  e28f1f87          ADR      r1,|L1.832|
000120  e3a00002          MOV      r0,#2
000124  ebfffffe          BL       OSTaskNameSet
;;;299    #endif
;;;300    }
000128  e28dd01c          ADD      sp,sp,#0x1c
00012c  e49de004          POP      {lr}
000130  e12fff1e          BX       lr
                          ENDP

                  AppTerminalRx PROC
;;;317    
;;;318    }
000134  e12fff1e          BX       lr
                          ENDP

                  AppTaskStart PROC
;;;120    static  void  AppTaskStart (void *p_arg)
;;;121    {
000138  e92d5ffc          PUSH     {r2-r12,lr}
;;;122        CPU_INT08U      i;
;;;123        CPU_INT08U      j;
;;;124        void           *msg;
;;;125        CPU_INT08U      err;
;;;126        CPU_INT08U      led;
;;;127        CPU_INT32U      leds;
;;;128        CPU_INT32U      delay0;
;;;129        CPU_INT32U      delay1;
;;;130    
;;;131    
;;;132        (void)p_arg;
;;;133    
;;;134        BSP_Init();                                                 /* Initialize BSP functions                                 */
00013c  ebfffffe          BL       BSP_Init
;;;135    
;;;136    #if OS_TASK_STAT_EN > 0
;;;137        OSStatInit();                                               /* Determine CPU capacity                                   */
000140  ebfffffe          BL       OSStatInit
;;;138    #endif
;;;139    
;;;140    #if OS_VIEW_MODULE > 0
;;;141        OSView_Init(115200);                                        /* OSView Init, baud rate = 115200                          */
000144  e59f0200          LDR      r0,|L1.844|
000148  ebfffffe          BL       OSView_Init
;;;142        OSView_TerminalRxSetCallback(AppTerminalRx);
00014c  e24f0020          ADR      r0,AppTerminalRx
000150  ebfffffe          BL       OSView_TerminalRxSetCallback
;;;143        OSView_RxIntEn();                                           /* Enable Rx Interrupts                                     */
000154  ebfffffe          BL       OSView_RxIntEn
;;;144    #endif
;;;145    
;;;146        LED_Off(0);                                                 /* Turn OFF all the LEDs                                    */
000158  e3a00000          MOV      r0,#0
00015c  ebfffffe          BL       LED_Off
;;;147    
;;;148    
;;;149        AppKbdQ         = OSQCreate(AppKbdQStorage, 16);            /* Create Q for communication between Kbd and Ser           */
000160  e3a01010          MOV      r1,#0x10
000164  e59f01e4          LDR      r0,|L1.848|
000168  ebfffffe          BL       OSQCreate
00016c  e59f11c0          LDR      r1,|L1.820|
000170  e5810000          STR      r0,[r1,#0]  ; AppKbdQ
;;;150        AppTaskCreate();                                            /* Create application tasks                                 */
000174  ebfffffe          BL       AppTaskCreate
;;;151    
;;;152    
;;;153        while (DEF_TRUE) {                                          /* Task body, always written as an infinite loop.           */
000178  ea00006c          B        |L1.816|
                  |L1.380|
;;;154    
;;;155            for (i = 1; i <= 4; i++) {                              /* Turn on each LED, one by one, delaying between           */
00017c  e3a04001          MOV      r4,#1
000180  ea000015          B        |L1.476|
                  |L1.388|
;;;156                LED_On(i);
000184  e1a00004          MOV      r0,r4
000188  ebfffffe          BL       LED_On
;;;157                delay0  = ADC_GetStatus(0) + 32;
00018c  e3a00000          MOV      r0,#0
000190  ebfffffe          BL       ADC_GetStatus
000194  e2800020          ADD      r0,r0,#0x20
000198  e58d0000          STR      r0,[sp,#0]
;;;158                OSTimeDlyHMSM(0, 0, delay0 / 1000, delay0 % 1000);
00019c  e3a01ffa          MOV      r1,#0x3e8
0001a0  e59d0000          LDR      r0,[sp,#0]
0001a4  ebfffffe          BL       __aeabi_uidivmod
0001a8  e1a0a801          LSL      r10,r1,#16

⌨️ 快捷键说明

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