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

📄 target.txt

📁 在KEIL下成功使用UCOS-II嵌入式操作系统
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 947] for uVision
; commandline ArmCC [--debug -c --asm --interleave -otarget.o --device=DARMP -O0 -IC:\Keil\ARM\INC\Philips src\target.c]

                          ARM

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

                  IRQ_Exception PROC
;;;54     {
;;;55         while(1);                   // change it to your code  这一句替换为自己的代码
000000  e1a00000          MOV      r0,r0
                  |L1.4|
000004  eafffffe          B        |L1.4|
;;;56     }
                          ENDP

                  FIQ_Exception PROC
;;;77     {
;;;78         while(1);                   // change it to your code  这一句替换为自己的代码
000008  e1a00000          MOV      r0,r0
                  |L1.12|
00000c  eafffffe          B        |L1.12|
;;;79     }
                          ENDP

                  Timer0_Exception PROC
;;;98             void Timer0_Exception(void)
;;;99     {
000010  e92d4010          PUSH     {r4,lr}
;;;100        T0IR = 0x01;
000014  e3a00001          MOV      r0,#1
000018  e59f131c          LDR      r1,|L1.828|
00001c  e5810000          STR      r0,[r1,#0]
;;;101        VICVectAddr = 0;            //interrupt close 通知中断控制器中断结束
000020  e3a00000          MOV      r0,#0
000024  e5000fd0          STR      r0,[r0,#-0xfd0]
;;;102        OSTimeTick();
000028  ebfffffe          BL       OSTimeTick
;;;103    }
00002c  e8bd8010          POP      {r4,pc}
                          ENDP

                  Timer0Init PROC
;;;124    {
;;;125        T0IR = 0xffffffff;
000030  e3e00000          MVN      r0,#0
000034  e59f1300          LDR      r1,|L1.828|
000038  e5810000          STR      r0,[r1,#0]
;;;126        T0TC = 0;
00003c  e3a00000          MOV      r0,#0
000040  e5810008          STR      r0,[r1,#8]
;;;127        T0TCR = 0x01;
000044  e3a00001          MOV      r0,#1
000048  e5810004          STR      r0,[r1,#4]
;;;128        T0MCR = 0x03;
00004c  e3a00003          MOV      r0,#3
000050  e5810014          STR      r0,[r1,#0x14]
;;;129        T0MR0 = (Fpclk / OS_TICKS_PER_SEC);
000054  e3a00b36          MOV      r0,#0xd800
000058  e5810018          STR      r0,[r1,#0x18]
;;;130     }
00005c  e12fff1e          BX       lr
                          ENDP

                  VICInit PROC
;;;153    
;;;154        VICIntEnClr = 0xffffffff;
000060  e3e00000          MVN      r0,#0
000064  e3a01000          MOV      r1,#0
000068  e5010fec          STR      r0,[r1,#-0xfec]
;;;155        VICDefVectAddr = (uint32)IRQ_Handler;
00006c  e59f02cc          LDR      r0,|L1.832|
000070  e5010fcc          STR      r0,[r1,#-0xfcc]
;;;156    
;;;157        VICVectAddr0 = (uint32)Timer0_Handler;
000074  e59f02c8          LDR      r0,|L1.836|
000078  e5010f00          STR      r0,[r1,#-0xf00]
;;;158        VICVectCntl0 = (0x20 | 0x04);
00007c  e3a00024          MOV      r0,#0x24
000080  e5010e00          STR      r0,[r1,#-0xe00]
;;;159        VICIntEnable = 1 << 4;
000084  e3a00010          MOV      r0,#0x10
000088  e5010ff0          STR      r0,[r1,#-0xff0]
;;;160     }
00008c  e12fff1e          BX       lr
                          ENDP

                  TargetInit PROC
;;;181            void TargetInit(void)
;;;182    {
                  |L1.144|
000090  e92d4010          PUSH     {r4,lr}
;;;183        OS_ENTER_CRITICAL();
000094  ef000002          SVC      0x2  ; formerly SWI
;;;184        srand((uint32) TargetInit);
000098  e24f0010          ADR      r0,|L1.144|
00009c  ebfffffe          BL       srand
;;;185        VICInit();
0000a0  ebfffffe          BL       VICInit
;;;186        Timer0Init();
0000a4  ebfffffe          BL       Timer0Init
;;;187        OS_EXIT_CRITICAL();
0000a8  ef000003          SVC      0x3  ; formerly SWI
;;;188    }
0000ac  e8bd8010          POP      {r4,pc}
                          ENDP

                  InitialiseUART0 PROC
;;;207            void InitialiseUART0(uint32 bps)
;;;208    {  	
0000b0  e92d4070          PUSH     {r4-r6,lr}
0000b4  e1a05000          MOV      r5,r0
;;;209        uint16 Fdiv;
;;;210        
;;;211        PINSEL0 = (PINSEL0 & 0xfffffff0) | 0x05;    /* Select the pins for Uart 选择管脚为UART0 */
0000b8  e59f0288          LDR      r0,|L1.840|
0000bc  e5900000          LDR      r0,[r0,#0]
0000c0  e3c0000f          BIC      r0,r0,#0xf
0000c4  e3800005          ORR      r0,r0,#5
0000c8  e59f1278          LDR      r1,|L1.840|
0000cc  e5810000          STR      r0,[r1,#0]
;;;212    
;;;213        U0LCR = 0x80;                               /* Enable to access the frequenc regecter 允许访问分频因子寄存器 */
0000d0  e3a00080          MOV      r0,#0x80
0000d4  e1c11500          BIC      r1,r1,r0,LSL #10
0000d8  e5c1000c          STRB     r0,[r1,#0xc]
;;;214        Fdiv = (Fpclk / 16) / bps;                  /* Set the baudrate设置波特率 */
0000dc  e1a01005          MOV      r1,r5
0000e0  e59f0264          LDR      r0,|L1.844|
0000e4  ebfffffe          BL       __aeabi_uidivmod
0000e8  e1a04800          LSL      r4,r0,#16
0000ec  e1a04824          LSR      r4,r4,#16
;;;215        U0DLM = Fdiv / 256;							
0000f0  e1a00004          MOV      r0,r4
0000f4  e1a01fc4          ASR      r1,r4,#31
0000f8  e0841c21          ADD      r1,r4,r1,LSR #24
0000fc  e1a01801          LSL      r1,r1,#16
000100  e1a01c21          LSR      r1,r1,#24
000104  e59f2244          LDR      r2,|L1.848|
000108  e5c21004          STRB     r1,[r2,#4]
;;;216    	U0DLL = Fdiv % 256;						
00010c  e1a00004          MOV      r0,r4
000110  e1a01fc4          ASR      r1,r4,#31
000114  e0841c21          ADD      r1,r4,r1,LSR #24
000118  e1a01441          ASR      r1,r1,#8
00011c  e0441401          SUB      r1,r4,r1,LSL #8
000120  e5c21000          STRB     r1,[r2,#0]
;;;217        U0LCR = 0x03;                               /* Disable to access the frequenc regecter 禁止访问分频因子寄存器 */
000124  e3a00003          MOV      r0,#3
000128  e1c21000          BIC      r1,r2,r0
00012c  e5c1000c          STRB     r0,[r1,#0xc]
;;;218                                                    /* set to 8,1,n 且设置为8,1,n */
;;;219    	U0IER = 0x00;                               /* Disable interrupt禁止中断 */
000130  e3a00000          MOV      r0,#0
000134  e5c10004          STRB     r0,[r1,#4]
;;;220        U0FCR = 0x00;                               /* initial FIFO 初始化FIFO */
000138  e5c10008          STRB     r0,[r1,#8]
;;;221    } 
00013c  e8bd8070          POP      {r4-r6,pc}
                          ENDP

                  TargetResetInit PROC
;;;240            void TargetResetInit(void)
;;;241    {
000140  e92d4010          PUSH     {r4,lr}
;;;242    #ifdef __DEBUG_RAM    
;;;243        MEMMAP = 0x2;                   //remap
;;;244    #endif
;;;245    
;;;246    #ifdef __DEBUG_FLASH    
;;;247        MEMMAP = 0x1;                   //remap
;;;248    #endif
;;;249    
;;;250    #ifdef __IN_CHIP    
;;;251        MEMMAP = 0x1;                   //remap
;;;252    #endif
;;;253    
;;;254        PINSEL0 = (PINSEL0 & 0xFFFF0000) | 0x05 | 0x50;
000144  e59f01fc          LDR      r0,|L1.840|
000148  e5900000          LDR      r0,[r0,#0]
00014c  e1a00820          LSR      r0,r0,#16
000150  e1a00800          LSL      r0,r0,#16
000154  e3800055          ORR      r0,r0,#0x55
000158  e59f11e8          LDR      r1,|L1.840|
00015c  e5810000          STR      r0,[r1,#0]
;;;255    
;;;256    /* 设置系统各部分时钟 */
;;;257    /* Set system timers for each component */
;;;258        PLLCON = 1;
000160  e3a00001          MOV      r0,#1
000164  e281181d          ADD      r1,r1,#0x1d0000
000168  e5c10080          STRB     r0,[r1,#0x80]
;;;259    #if (Fpclk / (Fcclk / 4)) == 1
;;;260        VPBDIV = 0;
00016c  e3a00000          MOV      r0,#0
000170  e5c10100          STRB     r0,[r1,#0x100]
;;;261    #endif
;;;262    #if (Fpclk / (Fcclk / 4)) == 2
;;;263        VPBDIV = 2;
;;;264    #endif
;;;265    #if (Fpclk / (Fcclk / 4)) == 4
;;;266        VPBDIV = 1;
;;;267    #endif
;;;268    
;;;269    #if (Fcco / Fcclk) == 2
;;;270        PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
;;;271    #endif
;;;272    #if (Fcco / Fcclk) == 4
;;;273        PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
000174  e3a00023          MOV      r0,#0x23
000178  e5c10084          STRB     r0,[r1,#0x84]
;;;274    #endif
;;;275    #if (Fcco / Fcclk) == 8
;;;276        PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
;;;277    #endif
;;;278    #if (Fcco / Fcclk) == 16
;;;279        PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
;;;280    #endif
;;;281        PLLFEED = 0xaa;
00017c  e3a000aa          MOV      r0,#0xaa
000180  e5c1008c          STRB     r0,[r1,#0x8c]
;;;282        PLLFEED = 0x55;
000184  e3a00055          MOV      r0,#0x55
000188  e5c1008c          STRB     r0,[r1,#0x8c]
;;;283        while((PLLSTAT & (1 << 10)) == 0);
00018c  e1a00000          MOV      r0,r0
                  |L1.400|
000190  e59f01bc          LDR      r0,|L1.852|
000194  e1d008b8          LDRH     r0,[r0,#0x88]
000198  e3100b01          TST      r0,#0x400
00019c  0afffffb          BEQ      |L1.400|
;;;284        PLLCON = 3;
0001a0  e3a00003          MOV      r0,#3
0001a4  e59f11a8          LDR      r1,|L1.852|
0001a8  e5c10080          STRB     r0,[r1,#0x80]
;;;285        PLLFEED = 0xaa;
0001ac  e3a000aa          MOV      r0,#0xaa
0001b0  e5c1008c          STRB     r0,[r1,#0x8c]
;;;286        PLLFEED = 0x55;
0001b4  e3a00055          MOV      r0,#0x55
0001b8  e5c1008c          STRB     r0,[r1,#0x8c]
;;;287    
;;;288    /* 设置存储器加速模块 */
;;;289    /* Set memory accelerater module*/
;;;290        MAMCR = 0;
0001bc  e3a00000          MOV      r0,#0
0001c0  e5c10000          STRB     r0,[r1,#0]
;;;291    #if Fcclk < 20000000
;;;292        MAMTIM = 1;
;;;293    #else
;;;294    #if Fcclk < 40000000
;;;295        MAMTIM = 2;
;;;296    #else
;;;297        MAMTIM = 3;
0001c4  e3a00003          MOV      r0,#3
0001c8  e5c10004          STRB     r0,[r1,#4]
;;;298    #endif

⌨️ 快捷键说明

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