📄 main.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 938] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\main.o --depend=.\Obj\main.d --device=DARMSTM --apcs=interwork -O3 -I.\Code\FATSystem\INC -I.\Code\Library\INC -I.\Code\SDCard\INC -I.\Code\Speaker\INC -I.\Code\System\INC -I.\Code\USBMassStorage\INC -I.\Code\User\INC -I.\Code\VS1003\INC -ID:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\Obj\main.crf Code\User\SRC\main.c]
THUMB
AREA ||i.USART_Scanf_Name||, CODE, READONLY, ALIGN=2
USART_Scanf_Name PROC
;;;55 u8 USART_Scanf_Name(u8 * str)
;;;56 {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;57 u8 index = 0;
000004 4f0d LDR r7,|L1.60|
000006 4606 MOV r6,r0 ;56
000008 2400 MOVS r4,#0
|L1.10|
;;;58 while(1)
;;;59 {
;;;60 /* Loop until RXNE = 1 */
;;;61 while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)
00000a 2120 MOVS r1,#0x20
00000c 4638 MOV r0,r7
00000e f7fffffe BL USART_GetFlagStatus
000012 2800 CMP r0,#0
000014 d0f9 BEQ |L1.10|
;;;62 {
;;;63 }
;;;64 str[index++] = (USART_ReceiveData(USART1));
000016 4638 MOV r0,r7
000018 f7fffffe BL USART_ReceiveData
00001c 5530 STRB r0,[r6,r4]
00001e 1c64 ADDS r4,r4,#1
000020 b2e4 UXTB r4,r4
;;;65 printf("%c",str[index - 1]);
000022 1935 ADDS r5,r6,r4
000024 f8151d01 LDRB r1,[r5,#-1]!
000028 a005 ADR r0,|L1.64|
00002a f7fffffe BL __1printf
;;;66 if(str[index - 1] == 13)
00002e 7828 LDRB r0,[r5,#0]
000030 280d CMP r0,#0xd
000032 d1ea BNE |L1.10|
;;;67 {
;;;68 index--;
000034 1e64 SUBS r4,r4,#1
000036 b2e0 UXTB r0,r4
;;;69 return index;
;;;70 }
;;;71 }
;;;72 }
000038 e8bd81f0 POP {r4-r8,pc}
;;;73
ENDP
|L1.60|
00003c 40013800 DCD 0x40013800
|L1.64|
000040 25630000 DCB "%c\0\0"
AREA ||i.USART_Scanf_Cmd||, CODE, READONLY, ALIGN=2
USART_Scanf_Cmd PROC
;;;81 u8 USART_Scanf_Cmd(u8 * str)
;;;82 {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;83 u8 index = 0;
000004 4f0e LDR r7,|L2.64|
000006 4606 MOV r6,r0 ;82
000008 2400 MOVS r4,#0
|L2.10|
;;;84 while(1)
;;;85 {
;;;86 /* Loop until RXNE = 1 */
;;;87 while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)
00000a 2120 MOVS r1,#0x20
00000c 4638 MOV r0,r7
00000e f7fffffe BL USART_GetFlagStatus
000012 2800 CMP r0,#0
000014 d0f9 BEQ |L2.10|
;;;88 {
;;;89 }
;;;90 str[index++] = (USART_ReceiveData(USART1));
000016 4638 MOV r0,r7
000018 f7fffffe BL USART_ReceiveData
00001c 5530 STRB r0,[r6,r4]
00001e 1c64 ADDS r4,r4,#1
000020 b2e4 UXTB r4,r4
;;;91 printf("%c",str[index - 1]);
000022 1935 ADDS r5,r6,r4
000024 f8151d01 LDRB r1,[r5,#-1]!
000028 a006 ADR r0,|L2.68|
00002a f7fffffe BL __1printf
;;;92 if(str[index - 1] == 13 || str[index - 1] == 32)
00002e 7828 LDRB r0,[r5,#0]
000030 280d CMP r0,#0xd
000032 d001 BEQ |L2.56|
000034 2820 CMP r0,#0x20
000036 d1e8 BNE |L2.10|
|L2.56|
;;;93 {
;;;94 index--;
000038 1e64 SUBS r4,r4,#1
00003a b2e0 UXTB r0,r4
;;;95 return index;
;;;96 }
;;;97 }
;;;98 }
00003c e8bd81f0 POP {r4-r8,pc}
;;;99
ENDP
|L2.64|
000040 40013800 DCD 0x40013800
|L2.68|
000044 25630000 DCB "%c\0\0"
AREA ||i.Equal||, CODE, READONLY, ALIGN=1
Equal PROC
000000 b530 PUSH {r4,r5,lr}
000002 429a CMP r2,r3
000004 d105 BNE |L3.18|
000006 2300 MOVS r3,#0
000008 e007 B |L3.26|
|L3.10|
00000a 5cc4 LDRB r4,[r0,r3]
00000c 5ccd LDRB r5,[r1,r3]
00000e 42ac CMP r4,r5
000010 d001 BEQ |L3.22|
|L3.18|
000012 2000 MOVS r0,#0
000014 bd30 POP {r4,r5,pc}
|L3.22|
000016 1c5b ADDS r3,r3,#1
000018 b2db UXTB r3,r3
|L3.26|
00001a 4293 CMP r3,r2
00001c d3f5 BCC |L3.10|
00001e 2001 MOVS r0,#1
000020 bd30 POP {r4,r5,pc}
ENDP
AREA ||i.PrintPass||, CODE, READONLY, ALIGN=2
PrintPass PROC
;;;125 void PrintPass(u8 * pass)
;;;126 {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;127 printf("\r\nX:");
000004 a007 ADR r0,|L4.36|
000006 f7fffffe BL __1printf
;;;128 while(* pass != '\0')
00000a e003 B |L4.20|
|L4.12|
;;;129 printf("%c",*(pass++));
00000c 1c64 ADDS r4,r4,#1
00000e a007 ADR r0,|L4.44|
000010 f7fffffe BL __1printf
|L4.20|
000014 7821 LDRB r1,[r4,#0] ;128
000016 2900 CMP r1,#0 ;128
000018 d1f8 BNE |L4.12|
;;;130 printf(">");
00001a e8bd4010 POP {r4,lr}
00001e a004 ADR r0,|L4.48|
000020 f7ffbffe B.W __1printf
;;;131 }
;;;132
ENDP
|L4.36|
000024 0d0a583a DCB "\r\n\130\72"
000028 00000000 DCB "\0\0\0\0"
|L4.44|
00002c 25630000 DCB "%c\0\0"
|L4.48|
000030 3e000000 DCB ">\0\0\0"
AREA ||i.Sleep||, CODE, READONLY, ALIGN=1
Sleep PROC
;;;141 {
;;;142 cpt_loop = cpt_loop * 10000;
000000 f2427110 MOV r1,#0x2710
000004 4348 MULS r0,r1,r0
|L5.6|
;;;143 while (cpt_loop -- != 0);
000006 1e40 SUBS r0,r0,#1
000008 d2fd BCS |L5.6|
;;;144 }
00000a 4770 BX lr
;;;145
ENDP
AREA ||i.main||, CODE, READONLY, ALIGN=2
main PROC
;;;153 int main(void)
;;;154 {
000000 e92d4ff0 PUSH {r4-r11,lr}
000004 f5ad7d23 SUB sp,sp,#0x28c
;;;155 u8 ret = 1;
;;;156
;;;157 static u32 currSec; // currSec记录当前目录所在的首扇区 ,fileSec记录打开文件首扇区
;;;158 u32 temp ,fileoffset;
;;;159 u8 pass[512]; // 记录路径
;;;160 u8 foldername[128]; // 文件或目录名
;;;161 u8 command[6]; // 记录命令
;;;162 u8 len1,len2;
;;;163 u32 tmp;
;;;164 s16 index;
;;;165 u32 i;
;;;166
;;;167 SetupClock ();
000008 f7fffffe BL SetupClock
;;;168 SetupUART1 ();
00000c f7fffffe BL SetupUART1
;;;169 VS1003_Config();
000010 f7fffffe BL VS1003_Config
;;;170 ret = MSD_Init();
000014 f7fffffe BL MSD_Init
;;;171 printf("\r\nMSD_Init result: %d",ret);
000018 4601 MOV r1,r0
00001a a0ac ADR r0,|L6.716|
00001c f7fffffe BL __1printf
;;;172 Get_Medium_Characteristics();
000020 f7fffffe BL Get_Medium_Characteristics
;;;173 printf("\r\nMsdBlockCount: %d",Mass_Block_Count);
000024 48af LDR r0,|L6.740|
000026 6801 LDR r1,[r0,#0] ; Mass_Block_Count
000028 a0af ADR r0,|L6.744|
00002a f7fffffe BL __1printf
;;;174 printf("\r\nMsdBlockSize: %d Byte",Mass_Block_Size);
00002e 48b3 LDR r0,|L6.764|
000030 6801 LDR r1,[r0,#0] ; Mass_Block_Size
000032 a0b3 ADR r0,|L6.768|
000034 f7fffffe BL __1printf
;;;175 printf("\r\nMsdMemorySize: %d MB\r\n",Mass_Memory_Size/1024/1024);
000038 48b7 LDR r0,|L6.792|
00003a 6800 LDR r0,[r0,#0] ; Mass_Memory_Size
00003c 0d01 LSRS r1,r0,#20
00003e a0b7 ADR r0,|L6.796|
000040 f7fffffe BL __1printf
;;;176
;;;177 FAT_Init();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -