📄 main.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o..\obj\main.o --depend=..\obj\main.d --device=DARMSTM --apcs=interwork -I..\..\library\inc -I..\..\library\src -I..\uvsion -IC:\Keil\ARM\INC\ST\STM32F10x --omf_browse=..\obj\main.crf main.c]
THUMB
AREA ||.text||, CODE, READONLY, ALIGN=2
GPIO_Configuration PROC
;;;149 void GPIO_Configuration(void)
;;;150 {
000000 b508 PUSH {r3,lr}
;;;151 GPIO_InitTypeDef GPIO_InitStructure;
;;;152
;;;153 /* Configure PC.06 as Output push-pull */
;;;154 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
000002 20c0 MOVS r0,#0xc0
000004 f8adf8ad STRH r0,[sp,#0]
;;;155 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000008 2003 MOVS r0,#3
00000a f88df88d STRB r0,[sp,#2]
;;;156 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
00000e 2010 MOVS r0,#0x10
000010 f88df88d STRB r0,[sp,#3]
;;;157 GPIO_Init(GPIOC, &GPIO_InitStructure);
000014 4669 MOV r1,sp
000016 4857 LDR r0,|L1.372|
000018 f7fff7ff BL GPIO_Init
;;;158
;;;159 /* Configure PB9 as input floating (EXTI Line9) */
;;;160 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
00001c f44ff44f MOV r0,#0x200
000020 f8adf8ad STRH r0,[sp,#0]
;;;161 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
000024 2004 MOVS r0,#4
000026 f88df88d STRB r0,[sp,#3]
;;;162 GPIO_Init(GPIOB, &GPIO_InitStructure);
00002a 4669 MOV r1,sp
00002c 4852 LDR r0,|L1.376|
00002e f7fff7ff BL GPIO_Init
;;;163
;;;164 /* Configure PB9 as input floating (EXTI Line9) */
;;;165 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
000032 f44ff44f MOV r0,#0x2000
000036 f8adf8ad STRH r0,[sp,#0]
;;;166 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
00003a 2004 MOVS r0,#4
00003c f88df88d STRB r0,[sp,#3]
;;;167 GPIO_Init(GPIOC, &GPIO_InitStructure);
000040 4669 MOV r1,sp
000042 484c LDR r0,|L1.372|
000044 f7fff7ff BL GPIO_Init
;;;168 }
000048 bd08 POP {r3,pc}
ENDP
NVIC_Configuration PROC
;;;177 void NVIC_Configuration(void)
;;;178 {
00004a b508 PUSH {r3,lr}
;;;179 NVIC_InitTypeDef NVIC_InitStructure;
;;;180
;;;181 #ifdef VECT_TAB_RAM
;;;182 /* Set the Vector Table base location at 0x20000000 */
;;;183 NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
;;;184 #else /* VECT_TAB_FLASH */
;;;185 /* Set the Vector Table base location at 0x08000000 */
;;;186 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
00004c 2100 MOVS r1,#0
00004e f04ff04f MOV r0,#0x8000000
000052 f7fff7ff BL NVIC_SetVectorTable
;;;187 #endif
;;;188
;;;189 /* Configure one bit for preemption priority */
;;;190 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
000056 f44ff44f MOV r0,#0x600
00005a f7fff7ff BL NVIC_PriorityGroupConfig
;;;191
;;;192 /* Enable the EXTI9_5 Interrupt
;;;193 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
;;;194 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
;;;195 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
;;;196 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
;;;197 NVIC_Init(&NVIC_InitStructure); */
;;;198
;;;199 /* Enable the EXTI9_5 Interrupt */
;;;200 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
00005e 2017 MOVS r0,#0x17
000060 f88df88d STRB r0,[sp,#0]
;;;201 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
000064 2000 MOVS r0,#0
000066 f88df88d STRB r0,[sp,#1]
;;;202 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
00006a f88df88d STRB r0,[sp,#2]
;;;203 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
00006e 2001 MOVS r0,#1
000070 f88df88d STRB r0,[sp,#3]
;;;204 NVIC_Init(&NVIC_InitStructure);
000074 4668 MOV r0,sp
000076 f7fff7ff BL NVIC_Init
;;;205
;;;206 /* Enable the EXTI15_10 Interrupt */
;;;207 NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel;
00007a 2028 MOVS r0,#0x28
00007c f88df88d STRB r0,[sp,#0]
;;;208 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
000080 2000 MOVS r0,#0
000082 f88df88d STRB r0,[sp,#1]
;;;209 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
000086 f88df88d STRB r0,[sp,#2]
;;;210 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
00008a 2001 MOVS r0,#1
00008c f88df88d STRB r0,[sp,#3]
;;;211 NVIC_Init(&NVIC_InitStructure);
000090 4668 MOV r0,sp
000092 f7fff7ff BL NVIC_Init
;;;212 }
000096 bd08 POP {r3,pc}
ENDP
RCC_Configuration PROC
;;;90 void RCC_Configuration(void)
;;;91 {
000098 b510 PUSH {r4,lr}
;;;92 /* RCC system reset(for debug purpose) */
;;;93 RCC_DeInit();
00009a f7fff7ff BL RCC_DeInit
;;;94
;;;95 /* Enable HSE */
;;;96 RCC_HSEConfig(RCC_HSE_ON);
00009e f44ff44f MOV r0,#0x10000
0000a2 f7fff7ff BL RCC_HSEConfig
;;;97
;;;98 /* Wait till HSE is ready */
;;;99 HSEStartUpStatus = RCC_WaitForHSEStartUp();
0000a6 f7fff7ff BL RCC_WaitForHSEStartUp
0000aa 4934 LDR r1,|L1.380|
0000ac 7008 STRB r0,[r1,#0] ; HSEStartUpStatus
;;;100
;;;101 if(HSEStartUpStatus == SUCCESS)
0000ae 4608 MOV r0,r1
0000b0 7800 LDRB r0,[r0,#0] ; HSEStartUpStatus
0000b2 2801 CMP r0,#1
0000b4 d126 BNE |L1.260|
;;;102 {
;;;103 /* HCLK = SYSCLK */
;;;104 RCC_HCLKConfig(RCC_SYSCLK_Div1);
0000b6 2000 MOVS r0,#0
0000b8 f7fff7ff BL RCC_HCLKConfig
;;;105
;;;106 /* PCLK2 = HCLK */
;;;107 RCC_PCLK2Config(RCC_HCLK_Div1);
0000bc 2000 MOVS r0,#0
0000be f7fff7ff BL RCC_PCLK2Config
;;;108
;;;109 /* PCLK1 = HCLK/2 */
;;;110 RCC_PCLK1Config(RCC_HCLK_Div2);
0000c2 f44ff44f MOV r0,#0x400
0000c6 f7fff7ff BL RCC_PCLK1Config
;;;111
;;;112 /* Flash 2 wait state */
;;;113 FLASH_SetLatency(FLASH_Latency_2);
0000ca 2002 MOVS r0,#2
0000cc f7fff7ff BL FLASH_SetLatency
;;;114 /* Enable Prefetch Buffer */
;;;115 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
0000d0 2010 MOVS r0,#0x10
0000d2 f7fff7ff BL FLASH_PrefetchBufferCmd
;;;116
;;;117 /* PLLCLK = 8MHz * 9 = 72 MHz */
;;;118 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
0000d6 f44ff44f MOV r1,#0x1c0000
0000da f44ff44f MOV r0,#0x10000
0000de f7fff7ff BL RCC_PLLConfig
;;;119
;;;120 /* Enable PLL */
;;;121 RCC_PLLCmd(ENABLE);
0000e2 2001 MOVS r0,#1
0000e4 f7fff7ff BL RCC_PLLCmd
;;;122
;;;123 /* Wait till PLL is ready */
;;;124 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
0000e8 bf00 NOP
|L1.234|
0000ea 2039 MOVS r0,#0x39
0000ec f7fff7ff BL RCC_GetFlagStatus
0000f0 2800 CMP r0,#0
0000f2 d0fa BEQ |L1.234|
;;;125 {
;;;126 }
;;;127
;;;128 /* Select PLL as system clock source */
;;;129 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
0000f4 2002 MOVS r0,#2
0000f6 f7fff7ff BL RCC_SYSCLKConfig
;;;130
;;;131 /* Wait till PLL is used as system clock source */
;;;132 while(RCC_GetSYSCLKSource() != 0x08)
0000fa bf00 NOP
|L1.252|
0000fc f7fff7ff BL RCC_GetSYSCLKSource
000100 2808 CMP r0,#8
000102 d1fb BNE |L1.252|
|L1.260|
;;;133 {
;;;134 }
;;;135 }
;;;136
;;;137 /* Enable GPIOB, GPIOC and AFIO clock */
;;;138 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOE
000104 2101 MOVS r1,#1
000106 2059 MOVS r0,#0x59
000108 f7fff7ff BL RCC_APB2PeriphClockCmd
;;;139 | RCC_APB2Periph_AFIO, ENABLE);
;;;140 }
00010c bd10 POP {r4,pc}
ENDP
main PROC
;;;43 int main(void)
;;;44 {
00010e b510 PUSH {r4,lr}
;;;45 #ifdef DEBUG
;;;46 debug();
;;;47 #endif
;;;48
;;;49 /* System Clocks Configuration */
;;;50 RCC_Configuration();
000110 f7fff7ff BL RCC_Configuration
;;;51
;;;52 /* NVIC configuration */
;;;53 NVIC_Configuration();
000114 f7fff7ff BL NVIC_Configuration
;;;54
;;;55 /* Configure the GPIO ports */
;;;56 GPIO_Configuration();
000118 f7fff7ff BL GPIO_Configuration
;;;57
;;;58 /* Connect EXTI Line9 to PB.09 */
;;;59 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
00011c 2109 MOVS r1,#9
00011e 2001 MOVS r0,#1
000120 f7fff7ff BL GPIO_EXTILineConfig
;;;60 GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);
000124 210d MOVS r1,#0xd
000126 2002 MOVS r0,#2
000128 f7fff7ff BL GPIO_EXTILineConfig
;;;61
;;;62 /* Configure EXTI Line9 to generate an interrupt on falling edge */
;;;63 EXTI_InitStructure.EXTI_Line = EXTI_Line9;
00012c f44ff44f MOV r0,#0x200
000130 4913 LDR r1,|L1.384|
000132 6008 STR r0,[r1,#0] ; EXTI_InitStructure
;;;64 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
000134 2000 MOVS r0,#0
000136 7108 STRB r0,[r1,#4] ; EXTI_InitStructure
;;;65 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
000138 200c MOVS r0,#0xc
00013a 7148 STRB r0,[r1,#5] ; EXTI_InitStructure
;;;66 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
00013c 2001 MOVS r0,#1
00013e 7188 STRB r0,[r1,#6] ; EXTI_InitStructure
;;;67 EXTI_Init(&EXTI_InitStructure);
000140 4608 MOV r0,r1
000142 f7fff7ff BL EXTI_Init
;;;68
;;;69 EXTI_InitStructure.EXTI_Line = EXTI_Line13;
000146 f44ff44f MOV r0,#0x2000
00014a 490d LDR r1,|L1.384|
00014c 6008 STR r0,[r1,#0] ; EXTI_InitStructure
;;;70 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
00014e 2000 MOVS r0,#0
000150 7108 STRB r0,[r1,#4] ; EXTI_InitStructure
;;;71 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
000152 200c MOVS r0,#0xc
000154 7148 STRB r0,[r1,#5] ; EXTI_InitStructure
;;;72 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
000156 2001 MOVS r0,#1
000158 7188 STRB r0,[r1,#6] ; EXTI_InitStructure
;;;73 EXTI_Init(&EXTI_InitStructure);
00015a 4608 MOV r0,r1
00015c f7fff7ff BL EXTI_Init
;;;74
;;;75 /* Generate software interrupt: simulate a falling edge applied on EXTI line 9 */
;;;76 EXTI_GenerateSWInterrupt(EXTI_Line9);
000160 f44ff44f MOV r0,#0x200
000164 f7fff7ff BL EXTI_GenerateSWInterrupt
;;;77 EXTI_GenerateSWInterrupt(EXTI_Line13);
000168 f44ff44f MOV r0,#0x2000
00016c f7fff7ff BL EXTI_GenerateSWInterrupt
;;;78 while (1)
000170 bf00 NOP
|L1.370|
000172 e7fe B |L1.370|
;;;79 {
;;;80 }
;;;81 }
ENDP
|L1.372|
000174 40011000 DCD 0x40011000
|L1.376|
000178 40010c00 DCD 0x40010c00
|L1.380|
00017c 00000000 DCD HSEStartUpStatus
|L1.384|
000180 00000000 DCD EXTI_InitStructure
AREA ||.data||, DATA, ALIGN=2
EXTI_InitStructure
% 8
HSEStartUpStatus
000008 00 DCB 0x00
__ARM_use_no_argv EQU 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -