📄 main.txt
字号:
000044 f7fffffe BL FAT_Init
;;;178 currSec = DirStartSec(); // 找到根目录的开始扇区号
000048 f7fffffe BL DirStartSec
00004c f8df82e8 LDR r8,|L6.824|
;;;179 pass[0] = '\\';
;;;180 pass[1] = '\0';
;;;181 index = 0;
000050 f8dfa2e8 LDR r10,|L6.828|
000054 f8c80004 STR r0,[r8,#4] ;179 ; currSec@main_0
000058 205c MOVS r0,#0x5c ;179
00005a f88d008c STRB r0,[sp,#0x8c] ;179
00005e 2000 MOVS r0,#0 ;180
000060 f8df92dc LDR r9,|L6.832|
000064 f88d008d STRB r0,[sp,#0x8d] ;180
000068 4604 MOV r4,r0
00006a f44f6b80 MOV r11,#0x400
|L6.110|
;;;182 while(1)
;;;183 {
;;;184 PrintPass(pass);
00006e a823 ADD r0,sp,#0x8c
000070 f7fffffe BL PrintPass
;;;185 len1 = USART_Scanf_Cmd(command);
000074 a801 ADD r0,sp,#4
000076 f7fffffe BL USART_Scanf_Cmd
00007a 4605 MOV r5,r0
;;;186 if(Equal(command, "dir",len1,3)) // 列出目录中所有项
00007c 4602 MOV r2,r0
00007e 2303 MOVS r3,#3
000080 a1b0 ADR r1,|L6.836|
000082 a801 ADD r0,sp,#4
000084 f7fffffe BL Equal
000088 b150 CBZ r0,|L6.160|
;;;187 {
;;;188 printf("\r\n\r\n");
00008a a0af ADR r0,|L6.840|
00008c f7fffffe BL __1printf
;;;189 SPI_Config(SPI_BaudRatePrescaler_2);
000090 2000 MOVS r0,#0
000092 f7fffffe BL SPI_Config
;;;190 List_AllDir_Long(currSec);
000096 f8d80004 LDR r0,[r8,#4] ; currSec@main_0
00009a f7fffffe BL List_AllDir_Long
00009e e7e6 B |L6.110|
|L6.160|
;;;191 }
;;;192 else if(Equal(command, "cd",len1,2)) // 更改路径
0000a0 2302 MOVS r3,#2
0000a2 462a MOV r2,r5
0000a4 a1aa ADR r1,|L6.848|
0000a6 a801 ADD r0,sp,#4
0000a8 f7fffffe BL Equal
0000ac 2800 CMP r0,#0
0000ae d03b BEQ |L6.296|
;;;193 {
;;;194 len2 = USART_Scanf_Name(foldername);
0000b0 a803 ADD r0,sp,#0xc
0000b2 f7fffffe BL USART_Scanf_Name
0000b6 4605 MOV r5,r0
;;;195 temp = SearchFoler(currSec, foldername, len2, 1);
0000b8 4602 MOV r2,r0
0000ba 2301 MOVS r3,#1
0000bc a903 ADD r1,sp,#0xc
0000be f8d80004 LDR r0,[r8,#4] ; currSec@main_0
0000c2 f7fffffe BL SearchFoler
;;;196 if(temp)
0000c6 2800 CMP r0,#0
0000c8 d0d1 BEQ |L6.110|
;;;197 {
;;;198 currSec = temp;
;;;199 if(Equal(foldername, "..",len2,2)) // 上级目录,修改路径
0000ca f8c80004 STR r0,[r8,#4] ; currSec@main_0
0000ce 2302 MOVS r3,#2
0000d0 462a MOV r2,r5
0000d2 a1a0 ADR r1,|L6.852|
0000d4 a803 ADD r0,sp,#0xc
0000d6 f7fffffe BL Equal
0000da b158 CBZ r0,|L6.244|
;;;200 {
;;;201 if(index > 0)
0000dc 2c00 CMP r4,#0
0000de ddc6 BLE |L6.110|
0000e0 a823 ADD r0,sp,#0x8c
|L6.226|
;;;202 {
;;;203 while(pass[--index] != '\\') ;
0000e2 1e64 SUBS r4,r4,#1
0000e4 b224 SXTH r4,r4
0000e6 5d01 LDRB r1,[r0,r4]
0000e8 295c CMP r1,#0x5c
0000ea d1fa BNE |L6.226|
;;;204 pass[index + 1] = '\0';
0000ec 2100 MOVS r1,#0
0000ee 4420 ADD r0,r0,r4
0000f0 7041 STRB r1,[r0,#1]
0000f2 e7bc B |L6.110|
|L6.244|
;;;205 }
;;;206 }
;;;207 else if(Equal(foldername, ".",len2,1)) ; // 当前目录,路径保持不变
0000f4 2301 MOVS r3,#1
0000f6 462a MOV r2,r5
0000f8 a197 ADR r1,|L6.856|
0000fa a803 ADD r0,sp,#0xc
0000fc f7fffffe BL Equal
000100 2800 CMP r0,#0
000102 d1b4 BNE |L6.110|
000104 aa03 ADD r2,sp,#0xc
000106 a923 ADD r1,sp,#0x8c
000108 e004 B |L6.276|
|L6.266|
;;;208 else // 子目录,修改路径
;;;209 {
;;;210 for(tmp = 0; tmp < len2; tmp++) // 记录路径
;;;211 pass[++index] = foldername[tmp];
00010a 1c64 ADDS r4,r4,#1
00010c 5c13 LDRB r3,[r2,r0]
00010e b224 SXTH r4,r4
000110 550b STRB r3,[r1,r4]
000112 1c40 ADDS r0,r0,#1 ;210
|L6.276|
000114 42a8 CMP r0,r5 ;210
000116 d3f8 BCC |L6.266|
;;;212 pass[++index] = '\\';
000118 1c64 ADDS r4,r4,#1
00011a 205c MOVS r0,#0x5c
00011c b224 SXTH r4,r4
00011e 5508 STRB r0,[r1,r4]
;;;213 pass[index + 1] = '\0';
000120 2000 MOVS r0,#0
000122 4421 ADD r1,r1,r4
000124 7048 STRB r0,[r1,#1]
|L6.294|
000126 e7a2 B |L6.110|
|L6.296|
;;;214 }
;;;215 }
;;;216 }
;;;217 else if( Equal(command, "read",len1,4)) // 以文本文件的方式打开文件
000128 2304 MOVS r3,#4
00012a 462a MOV r2,r5
00012c a18b ADR r1,|L6.860|
00012e a801 ADD r0,sp,#4
000130 f7fffffe BL Equal
000134 b3a8 CBZ r0,|L6.418|
;;;218 {
;;;219 len2 = USART_Scanf_Name(foldername);
000136 a803 ADD r0,sp,#0xc
000138 f7fffffe BL USART_Scanf_Name
;;;220 temp = SearchFoler(currSec, foldername, len2, 0);// 查找文件,并返回长度
00013c 4602 MOV r2,r0
00013e 2300 MOVS r3,#0
000140 a903 ADD r1,sp,#0xc
000142 f8d80004 LDR r0,[r8,#4] ; currSec@main_0
000146 f7fffffe BL SearchFoler
00014a 0007 MOVS r7,r0
;;;221 if(temp) // 找到文件
00014c d08f BEQ |L6.110|
;;;222 {
;;;223 printf("\r\n");
00014e a085 ADR r0,|L6.868|
000150 f7fffffe BL __1printf
;;;224
;;;225 // 输出文件内容
;;;226 for( fileoffset = 0 ; fileoffset < temp / buffsize ; fileoffset++)
000154 2600 MOVS r6,#0
000156 e00e B |L6.374|
|L6.344|
;;;227 {
;;;228 FAT_FileRead(fileoffset * buffsize, buffsize, Stream_Buff);
000158 02b0 LSLS r0,r6,#10
00015a 4a78 LDR r2,|L6.828|
00015c 4659 MOV r1,r11
00015e f7fffffe BL FAT_FileRead
;;;229 for(tmp = 0; tmp < buffsize; tmp++)
000162 2500 MOVS r5,#0
|L6.356|
;;;230 printf("%c", Stream_Buff[tmp]);
000164 f81a1005 LDRB r1,[r10,r5]
000168 a07f ADR r0,|L6.872|
00016a f7fffffe BL __1printf
00016e 1c6d ADDS r5,r5,#1 ;229
000170 455d CMP r5,r11 ;229
000172 d3f7 BCC |L6.356|
000174 1c76 ADDS r6,r6,#1 ;226
|L6.374|
000176 ebb62f97 CMP r6,r7,LSR #10 ;226
00017a d3ed BCC |L6.344|
;;;231 }
;;;232
;;;233 FAT_FileRead(fileoffset * buffsize , temp % buffsize, Stream_Buff);
00017c f3c70109 UBFX r1,r7,#0,#10
000180 460d MOV r5,r1
000182 02b0 LSLS r0,r6,#10
000184 4a6d LDR r2,|L6.828|
000186 f7fffffe BL FAT_FileRead
;;;234 for( tmp = 0; tmp < temp % buffsize; tmp ++)
00018a 2600 MOVS r6,#0
00018c e006 B |L6.412|
;;;235 printf("%c",Stream_Buff[tmp]);
00018e bf00 NOP
|L6.400|
000190 f81a1006 LDRB r1,[r10,r6]
000194 a074 ADR r0,|L6.872|
000196 f7fffffe BL __1printf
00019a 1c76 ADDS r6,r6,#1 ;234
|L6.412|
00019c 42b5 CMP r5,r6 ;234
00019e d8f7 BHI |L6.400|
|L6.416|
0001a0 e765 B |L6.110|
|L6.418|
0001a2 e7ff B |L6.420|
|L6.420|
;;;236
;;;237 }
;;;238 }
;;;239 else if( Equal(command, "free",len1,4)) // 计算剩余空间
0001a4 2304 MOVS r3,#4
0001a6 462a MOV r2,r5
0001a8 a170 ADR r1,|L6.876|
0001aa a801 ADD r0,sp,#4
0001ac f7fffffe BL Equal
0001b0 b130 CBZ r0,|L6.448|
;;;240 {
;;;241 printf("\r\n\r\nfree space: %dMB\r\n",CalcuFreeSpace() / 1024 / 1024);
0001b2 f7fffffe BL CalcuFreeSpace
0001b6 0d01 LSRS r1,r0,#20
0001b8 a06e ADR r0,|L6.884|
0001ba f7fffffe BL __1printf
0001be e756 B |L6.110|
|L6.448|
;;;242 }
;;;243 else if( Equal(command, "usb",len1,3)) // 读卡器
0001c0 2303 MOVS r3,#3
0001c2 462a MOV r2,r5
0001c4 a171 ADR r1,|L6.908|
0001c6 a801 ADD r0,sp,#4
0001c8 f7fffffe BL Equal
0001cc b168 CBZ r0,|L6.490|
;;;244 {
;;;245 SPI_Config(SPI_BaudRatePrescaler_2);
0001ce 2000 MOVS r0,#0
0001d0 f7fffffe BL SPI_Config
;;;246 Set_USBClock();
0001d4 f7fffffe BL Set_USBClock
;;;247 USB_Interrupts_Config();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -