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

📄 os_viewc.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 -oos_viewc.o --depend=os_viewc.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 ..\..\..\..\..\uCOSView\Ports\ARM7\LPC2468\RVMDK\os_viewc.c]
                          ARM

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

                  OSView_Exit PROC
;;;47         ;
;;;48     }
000000  e12fff1e          BX       lr
                          ENDP

                  OSView_GetCPUName PROC
;;;62     void  OSView_GetCPUName (INT8U *s)
;;;63     {
000004  e92d4070          PUSH     {r4-r6,lr}
000008  e1a04000          MOV      r4,r0
;;;64         INT8U  cpu_clk_freq;
;;;65     
;;;66     
;;;67         cpu_clk_freq = (INT8U)(BSP_CPU_ClkFreq() / 1000000L);
00000c  ebfffffe          BL       BSP_CPU_ClkFreq
000010  e1a06000          MOV      r6,r0
000014  e59f11e4          LDR      r1,|L1.512|
000018  ebfffffe          BL       __aeabi_uidivmod
00001c  e20050ff          AND      r5,r0,#0xff
;;;68         (void)OS_StrCopy(s, "NXP LPC2468 (xx MHz)");
000020  e28f1f77          ADR      r1,|L1.516|
000024  e1a00004          MOV      r0,r4
000028  ebfffffe          BL       OS_StrCopy
;;;69         s[13] = cpu_clk_freq / 10 + '0';
00002c  e3a0100a          MOV      r1,#0xa
000030  e1a00005          MOV      r0,r5
000034  ebfffffe          BL       __aeabi_idivmod
000038  e2800030          ADD      r0,r0,#0x30
00003c  e5c4000d          STRB     r0,[r4,#0xd]
;;;70         s[14] = cpu_clk_freq % 10 + '0';
000040  e3a0100a          MOV      r1,#0xa
000044  e1a00005          MOV      r0,r5
000048  ebfffffe          BL       __aeabi_idivmod
00004c  e2810030          ADD      r0,r1,#0x30
000050  e5c4000e          STRB     r0,[r4,#0xe]
;;;71     }
000054  e8bd4070          POP      {r4-r6,lr}
000058  e12fff1e          BX       lr
                          ENDP

                  OSView_GetIntStkBase PROC
;;;88     {
;;;89         return (0);                                                         /* We are not using an ISR stack                            */
00005c  e3a00000          MOV      r0,#0
;;;90     }
000060  e12fff1e          BX       lr
                          ENDP

                  OSView_GetIntStkSize PROC
;;;94     {
;;;95         return (0);                                                         /* We are not using an ISR stack                            */
000064  e3a00000          MOV      r0,#0
;;;96     }
000068  e12fff1e          BX       lr
                          ENDP

                  OSView_RxTxISRHandler PROC
;;;261    void  OSView_RxTxISRHandler (void)
;;;262    {
00006c  e92d4070          PUSH     {r4-r6,lr}
;;;263        volatile  INT8U  rx_data;
;;;264        volatile  INT8U  lsr;
;;;265        volatile  INT8U  iir;
;;;266    
;;;267    
;;;268    #if OS_VIEW_COMM_SEL == OS_VIEW_UART_0
;;;269        iir = U0IIR & 0x0F;
;;;270        while (iir != 1) {
;;;271            switch (iir) {
;;;272                case  0:                                                    /* Modem interrupt?                                         */
;;;273                     break;
;;;274    
;;;275                case  2:                                                    /* Transmitted character?                                   */
;;;276                     OSView_TxHandler();
;;;277                     break;
;;;278    
;;;279                case  4:                                                    /* Received a character?                                    */
;;;280                     lsr     = U0LSR;
;;;281                     rx_data = U0RBR;
;;;282                     OSView_RxHandler(rx_data);                             /* Call the generic Rx handler                              */
;;;283                     break;
;;;284    
;;;285                case  6:                                                    /* Receive Line Status interrupt?                           */
;;;286                     break;
;;;287    
;;;288                case 12:                                                    /* CTI interrupt?                                           */
;;;289                     break;
;;;290            }
;;;291            iir = U0IIR & 0x0F;
;;;292        }
;;;293    #endif
;;;294    
;;;295    #if OS_VIEW_COMM_SEL == OS_VIEW_UART_1
;;;296        iir = U1IIR & 0x0F;
000070  e59f01a4          LDR      r0,|L1.540|
000074  e5900008          LDR      r0,[r0,#8]
000078  e200600f          AND      r6,r0,#0xf
;;;297        while (iir != 1) {
00007c  ea000023          B        |L1.272|
                  |L1.128|
;;;298            switch (iir) {
000080  e3560004          CMP      r6,#4
000084  0a00000f          BEQ      |L1.200|
000088  ca000004          BGT      |L1.160|
00008c  e3560000          CMP      r6,#0
000090  0a000007          BEQ      |L1.180|
000094  e3560002          CMP      r6,#2
000098  1a000018          BNE      |L1.256|
00009c  ea000006          B        |L1.188|
                  |L1.160|
0000a0  e3560006          CMP      r6,#6
0000a4  0a000011          BEQ      |L1.240|
0000a8  e356000c          CMP      r6,#0xc
0000ac  1a000013          BNE      |L1.256|
0000b0  ea000010          B        |L1.248|
                  |L1.180|
;;;299                case  0:                                                    /* Modem interrupt?                                         */
0000b4  e1a00000          MOV      r0,r0
;;;300                     break;
0000b8  ea000010          B        |L1.256|
                  |L1.188|
;;;301    
;;;302                case  2:                                                    /* Transmitted character?                                   */
0000bc  e1a00000          MOV      r0,r0
;;;303                     OSView_TxHandler();
0000c0  ebfffffe          BL       OSView_TxHandler
;;;304                     break;
0000c4  ea00000d          B        |L1.256|
                  |L1.200|
;;;305    
;;;306                case  4:                                                    /* Received a character?                                    */
0000c8  e1a00000          MOV      r0,r0
;;;307                     lsr     = U1LSR;
0000cc  e59f0148          LDR      r0,|L1.540|
0000d0  e5900014          LDR      r0,[r0,#0x14]
0000d4  e20050ff          AND      r5,r0,#0xff
;;;308                     rx_data = U1RBR;
0000d8  e59f013c          LDR      r0,|L1.540|
0000dc  e5900000          LDR      r0,[r0,#0]
0000e0  e20040ff          AND      r4,r0,#0xff
;;;309                     OSView_RxHandler(rx_data);                             /* Call the generic Rx handler                              */
0000e4  e1a00004          MOV      r0,r4
0000e8  ebfffffe          BL       OSView_RxHandler
;;;310                     break;
0000ec  ea000003          B        |L1.256|
                  |L1.240|
;;;311    
;;;312                case  6:                                                    /* Receive Line Status interrupt?                           */
0000f0  e1a00000          MOV      r0,r0
;;;313                     break;
0000f4  ea000001          B        |L1.256|
                  |L1.248|
;;;314    
;;;315                case 12:                                                    /* CTI interrupt?                                           */
0000f8  e1a00000          MOV      r0,r0
;;;316                     break;
0000fc  e1a00000          MOV      r0,r0
                  |L1.256|
000100  e1a00000          MOV      r0,r0
;;;317            }
;;;318            iir = U1IIR & 0x0F;
000104  e59f0110          LDR      r0,|L1.540|
000108  e5900008          LDR      r0,[r0,#8]
00010c  e200600f          AND      r6,r0,#0xf
                  |L1.272|
000110  e3560001          CMP      r6,#1
000114  1affffd9          BNE      |L1.128|
;;;319        }
;;;320    #endif
;;;321    }
000118  e8bd4070          POP      {r4-r6,lr}
00011c  e12fff1e          BX       lr
                          ENDP

                  OSView_InitTarget PROC
;;;117    void  OSView_InitTarget (INT32U baud_rate)
;;;118    {
000120  e92d5ff0          PUSH     {r4-r12,lr}
000124  e1a04000          MOV      r4,r0
;;;119        INT16U     div;                                                     /* Baud rate divisor                                        */
;;;120        INT8U      divlo;
;;;121        INT8U      divhi;
;;;122        INT8U      lcr;										                /* Line Control Register                                    */
;;;123        INT32U     p_clk_freq;
;;;124        INT32U     pinsel;
;;;125    
;;;126    
;;;127    #if OS_CRITICAL_METHOD == 3                                             /* Allocate storage for CPU status register                 */
;;;128        OS_CPU_SR  cpu_sr    = 0;

⌨️ 快捷键说明

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