📄 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..\Release\main.o --depend=..\Release\main.d --device=DARMSTM --apcs=interwork -O3 -I..\code\header -I..\code\library\inc -I..\..\include -I..\..\..\..\library\inc -I..\..\..\..\..\FWLib\library\inc -I..\code\FAT16 -I..\code\driver -ID:\Keil\ARM\INC\ST\STM32F10x -DVECT_TAB_FLASH -W --omf_browse=..\Release\main.crf ..\code\user\main.c]
THUMB
AREA ||i.USART_Scanf_Name||, CODE, READONLY, ALIGN=2
USART_Scanf_Name PROC
;;;58 u8 USART_Scanf_Name(u8 * str)
;;;59 {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;60 u8 index = 0;
000004 4f0d LDR r7,|L1.60|
000006 4606 MOV r6,r0 ;59
000008 2400 MOVS r4,#0
|L1.10|
;;;61 while(1)
;;;62 {
;;;63 /* Loop until RXNE = 1 */
;;;64 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|
;;;65 {
;;;66 }
;;;67 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
;;;68 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
;;;69 if(str[index - 1] == 13)
00002e 7828 LDRB r0,[r5,#0]
000030 280d CMP r0,#0xd
000032 d1ea BNE |L1.10|
;;;70 {
;;;71 index--;
000034 1e64 SUBS r4,r4,#1
000036 b2e0 UXTB r0,r4
;;;72 return index;
;;;73 }
;;;74 }
;;;75 }
000038 e8bd81f0 POP {r4-r8,pc}
;;;76
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
;;;84 u8 USART_Scanf_Cmd(u8 * str)
;;;85 {
000000 e92d41f0 PUSH {r4-r8,lr}
;;;86 u8 index = 0;
000004 4f0e LDR r7,|L2.64|
000006 4606 MOV r6,r0 ;85
000008 2400 MOVS r4,#0
|L2.10|
;;;87 while(1)
;;;88 {
;;;89 /* Loop until RXNE = 1 */
;;;90 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|
;;;91 {
;;;92 }
;;;93 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
;;;94 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
;;;95 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|
;;;96 {
;;;97 index--;
000038 1e64 SUBS r4,r4,#1
00003a b2e0 UXTB r0,r4
;;;98 return index;
;;;99 }
;;;100 }
;;;101 }
00003c e8bd81f0 POP {r4-r8,pc}
;;;102
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
;;;128 void PrintPass(u8 * pass)
;;;129 {
000000 b510 PUSH {r4,lr}
000002 4604 MOV r4,r0
;;;130 printf("\r\nX:");
000004 a007 ADR r0,|L4.36|
000006 f7fffffe BL __1printf
;;;131 while(* pass != '\0')
00000a e003 B |L4.20|
|L4.12|
;;;132 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] ;131
000016 2900 CMP r1,#0 ;131
000018 d1f8 BNE |L4.12|
;;;133 printf(">");
00001a e8bd4010 POP {r4,lr}
00001e a004 ADR r0,|L4.48|
000020 f7ffbffe B.W __1printf
;;;134 }
;;;135
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.SetupClock||, CODE, READONLY, ALIGN=2
SetupClock PROC
;;;143 void SetupClock(void)
;;;144 {
000000 b570 PUSH {r4-r6,lr}
;;;145
;;;146 ErrorStatus HSEStartUpStatus;
;;;147 /* RCC system reset(for debug purpose) */
;;;148 RCC_DeInit();
000002 f7fffffe BL RCC_DeInit
;;;149
;;;150 /* Enable HSE */
;;;151 RCC_HSEConfig(RCC_HSE_ON);
000006 f44f3580 MOV r5,#0x10000
00000a 4628 MOV r0,r5
00000c f7fffffe BL RCC_HSEConfig
;;;152
;;;153 /* Wait till HSE is ready */
;;;154 HSEStartUpStatus = RCC_WaitForHSEStartUp();
000010 f7fffffe BL RCC_WaitForHSEStartUp
;;;155
;;;156 if(HSEStartUpStatus == SUCCESS)
000014 2801 CMP r0,#1
000016 d121 BNE |L5.92|
;;;157 {
;;;158 /* HCLK = SYSCLK */
;;;159 RCC_HCLKConfig(RCC_SYSCLK_Div1);
000018 2000 MOVS r0,#0
00001a f7fffffe BL RCC_HCLKConfig
;;;160
;;;161 /* PCLK2 = HCLK/2 */
;;;162 RCC_PCLK2Config(RCC_HCLK_Div2);
00001e 11ac ASRS r4,r5,#6
000020 4620 MOV r0,r4
000022 f7fffffe BL RCC_PCLK2Config
;;;163
;;;164 /* PCLK1 = HCLK/2 */
;;;165 RCC_PCLK1Config(RCC_HCLK_Div2);
000026 4620 MOV r0,r4
000028 f7fffffe BL RCC_PCLK1Config
;;;166
;;;167 /* Flash 2 wait state */
;;;168 FLASH_SetLatency(FLASH_Latency_2);
00002c 2002 MOVS r0,#2
00002e f7fffffe BL FLASH_SetLatency
;;;169
;;;170 /* PLLCLK = 8MHz * 9 = 72 MHz */
;;;171 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
000032 f44f11e0 MOV r1,#0x1c0000
000036 4628 MOV r0,r5
000038 f7fffffe BL RCC_PLLConfig
;;;172
;;;173 /* Enable PLL */
;;;174 RCC_PLLCmd(ENABLE);
00003c 2001 MOVS r0,#1
00003e f7fffffe BL RCC_PLLCmd
|L5.66|
;;;175
;;;176 /* Wait till PLL is ready */
;;;177 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
000042 2039 MOVS r0,#0x39
000044 f7fffffe BL RCC_GetFlagStatus
000048 2800 CMP r0,#0
00004a d0fa BEQ |L5.66|
;;;178
;;;179 /* Select PLL as system clock source */
;;;180 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
00004c 2002 MOVS r0,#2
00004e f7fffffe BL RCC_SYSCLKConfig
;;;181
;;;182 /* Wait till PLL is used as system clock source */
;;;183 while(RCC_GetSYSCLKSource() != 0x08);
000052 bf00 NOP
|L5.84|
000054 f7fffffe BL RCC_GetSYSCLKSource
000058 2808 CMP r0,#8
00005a d1fb BNE |L5.84|
|L5.92|
;;;184
;;;185 }
;;;186
;;;187 /* Enable peripheral clocks --------------------------------------------------*/
;;;188 /* GPIOA, GPIOB and SPI1 clock enable */
;;;189 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOE |
00005c 2101 MOVS r1,#1
00005e f245005c MOV r0,#0x505c
000062 f7fffffe BL RCC_APB2PeriphClockCmd
;;;190 RCC_APB2Periph_USART1 |RCC_APB2Periph_SPI1, ENABLE);
;;;191
;;;192 /* SysTick event each 10 ms with input clock equal to 9MHz (HCLK/8) */
;;;193 SysTick_SetReload(90000);
000066 4804 LDR r0,|L5.120|
000068 f7fffffe BL SysTick_SetReload
;;;194
;;;195 SysTick_ITConfig(ENABLE); /* Enable SysTick interrupt */
00006c e8bd4070 POP {r4-r6,lr}
000070 2001 MOVS r0,#1
000072 f7ffbffe B.W SysTick_ITConfig
;;;196 }
;;;197
ENDP
000076 0000 DCW 0x0000
|L5.120|
000078 00015f90 DCD 0x00015f90
AREA ||i.Sleep||, CODE, READONLY, ALIGN=1
Sleep PROC
;;;199 {
;;;200 cpt_loop = cpt_loop * 10000;
000000 f2427110 MOV r1,#0x2710
000004 4348 MULS r0,r1,r0
|L6.6|
;;;201 while (cpt_loop -- != 0);
000006 1e40 SUBS r0,r0,#1
000008 d2fd BCS |L6.6|
;;;202 }
00000a 4770 BX lr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -