📄 target.txt
字号:
; 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 + -