📄 lowpower.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 942] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Int_Flash\lowpower.o --depend=.\Int_Flash\lowpower.d --device=DARMSTM --apcs=interwork -O3 -I..\include -I..\..\..\..\..\INC\ST\STM32F10x\USB -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB --omf_browse=.\Int_Flash\lowpower.crf ..\source\lowpower.c]
THUMB
AREA ||i.LowPower_Init||, CODE, READONLY, ALIGN=1
LowPower_Init PROC
;;;42 void LowPower_Init(void)
;;;43 {
000000 b510 PUSH {r4,lr}
;;;44 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
000002 2101 MOVS r1,#1
000004 0708 LSLS r0,r1,#28
000006 f7fffffe BL RCC_APB1PeriphClockCmd
;;;45
;;;46 /* Enable WakeUp pin */
;;;47 PWR_WakeUpPinCmd(ENABLE);
00000a 2001 MOVS r0,#1
00000c f7fffffe BL PWR_WakeUpPinCmd
;;;48
;;;49 /* Enable Clock Security System(CSS) */
;;;50 RCC_ClockSecuritySystemCmd(ENABLE);
000010 e8bd4010 POP {r4,lr}
000014 2001 MOVS r0,#1
000016 f7ffbffe B.W RCC_ClockSecuritySystemCmd
;;;51 }
;;;52
ENDP
AREA ||i.SYSCLKConfig_STOP||, CODE, READONLY, ALIGN=2
SYSCLKConfig_STOP PROC
;;;61 void SYSCLKConfig_STOP(void)
;;;62 {
000000 b510 PUSH {r4,lr}
;;;63 ErrorStatus HSEStartUpStatus;
;;;64
;;;65 /* Enable HSE */
;;;66 RCC_HSEConfig(RCC_HSE_ON);
000002 f44f3080 MOV r0,#0x10000
000006 f7fffffe BL RCC_HSEConfig
;;;67
;;;68 /* Wait till HSE is ready */
;;;69 HSEStartUpStatus = RCC_WaitForHSEStartUp();
00000a f7fffffe BL RCC_WaitForHSEStartUp
;;;70
;;;71 if(HSEStartUpStatus == SUCCESS)
00000e 2801 CMP r0,#1
000010 d10e BNE |L2.48|
;;;72 {
;;;73 /* Enable PLL */
;;;74 RCC_PLLCmd(ENABLE);
000012 f7fffffe BL RCC_PLLCmd
|L2.22|
;;;75
;;;76 /* Wait till PLL is ready */
;;;77 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
000016 2039 MOVS r0,#0x39
000018 f7fffffe BL RCC_GetFlagStatus
00001c 2800 CMP r0,#0
00001e d0fa BEQ |L2.22|
;;;78 {
;;;79 }
;;;80
;;;81 /* Select PLL as system clock source */
;;;82 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
000020 2002 MOVS r0,#2
000022 f7fffffe BL RCC_SYSCLKConfig
;;;83
;;;84 /* Wait till PLL is used as system clock source */
;;;85 while(RCC_GetSYSCLKSource() != 0x08)
000026 bf00 NOP
|L2.40|
000028 f7fffffe BL RCC_GetSYSCLKSource
00002c 2808 CMP r0,#8
00002e d1fb BNE |L2.40|
|L2.48|
;;;86 {
;;;87 }
;;;88 }
;;;89 }
000030 bd10 POP {r4,pc}
;;;90
ENDP
AREA ||i.GPIO_RestoreConfig||, CODE, READONLY, ALIGN=2
GPIO_RestoreConfig PROC
;;;445 {
;;;446 GPIOA->CRL = GPIOA_CRL;
000000 4814 LDR r0,|L3.84|
000002 4915 LDR r1,|L3.88|
000004 6842 LDR r2,[r0,#4] ; GPIOA_CRL
000006 600a STR r2,[r1,#0]
;;;447 GPIOA->CRH = GPIOA_CRH;
000008 6882 LDR r2,[r0,#8] ; GPIOA_CRH
00000a 604a STR r2,[r1,#4]
;;;448
;;;449 GPIOB->CRL = GPIOB_CRL;
00000c 68c2 LDR r2,[r0,#0xc] ; GPIOB_CRL
00000e f8c12400 STR r2,[r1,#0x400]
;;;450 GPIOB->CRH = GPIOB_CRH;
000012 6902 LDR r2,[r0,#0x10] ; GPIOB_CRH
000014 f8c12404 STR r2,[r1,#0x404]
;;;451
;;;452 GPIOC->CRL = GPIOC_CRL;
000018 4910 LDR r1,|L3.92|
00001a 6942 LDR r2,[r0,#0x14] ; GPIOC_CRL
00001c 600a STR r2,[r1,#0]
;;;453 GPIOC->CRH = GPIOC_CRH;
00001e 6982 LDR r2,[r0,#0x18] ; GPIOC_CRH
000020 604a STR r2,[r1,#4]
;;;454
;;;455 GPIOD->CRL = GPIOD_CRL;
000022 69c2 LDR r2,[r0,#0x1c] ; GPIOD_CRL
000024 f8c12400 STR r2,[r1,#0x400]
;;;456 GPIOD->CRH = GPIOD_CRH;
000028 6a02 LDR r2,[r0,#0x20] ; GPIOD_CRH
00002a f8c12404 STR r2,[r1,#0x404]
;;;457
;;;458 GPIOE->CRL = GPIOE_CRL;
00002e 6a42 LDR r2,[r0,#0x24] ; GPIOE_CRL
000030 f8c12800 STR r2,[r1,#0x800]
;;;459 GPIOE->CRH = GPIOE_CRH;
000034 6a82 LDR r2,[r0,#0x28] ; GPIOE_CRH
000036 f8c12804 STR r2,[r1,#0x804]
;;;460
;;;461 GPIOF->CRL = GPIOF_CRL;
00003a 6ac2 LDR r2,[r0,#0x2c] ; GPIOF_CRL
00003c f8c12c00 STR r2,[r1,#0xc00]
;;;462 GPIOF->CRH = GPIOF_CRH;
000040 6b02 LDR r2,[r0,#0x30] ; GPIOF_CRH
000042 f8c12c04 STR r2,[r1,#0xc04]
;;;463
;;;464 GPIOG->CRL = GPIOG_CRL;
000046 4906 LDR r1,|L3.96|
000048 6b42 LDR r2,[r0,#0x34] ; GPIOG_CRL
00004a 600a STR r2,[r1,#0]
;;;465 GPIOG->CRH = GPIOG_CRH;
00004c 6b80 LDR r0,[r0,#0x38] ; GPIOG_CRH
00004e 6048 STR r0,[r1,#4]
;;;466 }
000050 4770 BX lr
;;;467
ENDP
000052 0000 DCW 0x0000
|L3.84|
000054 00000000 DCD ||.data||
|L3.88|
000058 40010800 DCD 0x40010800
|L3.92|
00005c 40011000 DCD 0x40011000
|L3.96|
000060 40012000 DCD 0x40012000
AREA ||i.GPIO_SaveConfig||, CODE, READONLY, ALIGN=2
GPIO_SaveConfig PROC
;;;400 static void GPIO_SaveConfig(void)
;;;401 {
000000 b538 PUSH {r3-r5,lr}
000002 4926 LDR r1,|L4.156|
;;;402 GPIO_InitTypeDef GPIO_InitStructure;
;;;403
;;;404 GPIOA_CRL = GPIOA->CRL;
000004 680a LDR r2,[r1,#0]
000006 4826 LDR r0,|L4.160|
;;;405 GPIOA_CRH = GPIOA->CRH;
000008 6042 STR r2,[r0,#4] ; GPIOA_CRL
00000a 684a LDR r2,[r1,#4]
;;;406
;;;407 GPIOB_CRL = GPIOB->CRL;
00000c 6082 STR r2,[r0,#8] ; GPIOA_CRH
00000e f8d12400 LDR r2,[r1,#0x400]
;;;408 GPIOB_CRH = GPIOB->CRH;
000012 60c2 STR r2,[r0,#0xc] ; GPIOB_CRL
000014 f8d11404 LDR r1,[r1,#0x404]
;;;409
;;;410 GPIOC_CRL = GPIOC->CRL;
000018 4c22 LDR r4,|L4.164|
00001a 6101 STR r1,[r0,#0x10] ; GPIOB_CRH
00001c 6821 LDR r1,[r4,#0]
;;;411 GPIOC_CRH = GPIOC->CRH;
00001e 6141 STR r1,[r0,#0x14] ; GPIOC_CRL
000020 6861 LDR r1,[r4,#4]
;;;412
;;;413 GPIOD_CRL = GPIOD->CRL;
000022 6181 STR r1,[r0,#0x18] ; GPIOC_CRH
000024 f8d41400 LDR r1,[r4,#0x400]
;;;414 GPIOD_CRH = GPIOD->CRH;
000028 61c1 STR r1,[r0,#0x1c] ; GPIOD_CRL
00002a f8d41404 LDR r1,[r4,#0x404]
;;;415
;;;416 GPIOE_CRL = GPIOE->CRL;
00002e 6201 STR r1,[r0,#0x20] ; GPIOD_CRH
000030 f8d41800 LDR r1,[r4,#0x800]
;;;417 GPIOE_CRH = GPIOE->CRH;
000034 6241 STR r1,[r0,#0x24] ; GPIOE_CRL
000036 f8d41804 LDR r1,[r4,#0x804]
;;;418
;;;419 GPIOF_CRL = GPIOF->CRL;
00003a 6281 STR r1,[r0,#0x28] ; GPIOE_CRH
00003c f8d41c00 LDR r1,[r4,#0xc00]
;;;420 GPIOF_CRH = GPIOF->CRH;
000040 62c1 STR r1,[r0,#0x2c] ; GPIOF_CRL
000042 f8d41c04 LDR r1,[r4,#0xc04]
;;;421
;;;422 GPIOG_CRL = GPIOG->CRL;
000046 4d18 LDR r5,|L4.168|
000048 6301 STR r1,[r0,#0x30] ; GPIOF_CRH
00004a 6829 LDR r1,[r5,#0]
;;;423 GPIOG_CRH = GPIOG->CRH;
00004c 6341 STR r1,[r0,#0x34] ; GPIOG_CRL
00004e 6869 LDR r1,[r5,#4]
;;;424
;;;425 /* Configure all GPIO port pins in Analog Input mode (floating input trigger OFF) */
;;;426 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
000050 6381 STR r1,[r0,#0x38] ; GPIOG_CRH
000052 f64f70ff MOV r0,#0xffff
000056 f8ad0000 STRH r0,[sp,#0]
;;;427 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
00005a 2000 MOVS r0,#0
00005c f88d0003 STRB r0,[sp,#3]
;;;428 GPIO_Init(GPIOA, &GPIO_InitStructure);
000060 4669 MOV r1,sp
000062 480e LDR r0,|L4.156|
000064 f7fffffe BL GPIO_Init
;;;429 GPIO_Init(GPIOB, &GPIO_InitStructure);
000068 4669 MOV r1,sp
00006a 4810 LDR r0,|L4.172|
00006c f7fffffe BL GPIO_Init
;;;430 GPIO_Init(GPIOC, &GPIO_InitStructure);
000070 4669 MOV r1,sp
000072 4620 MOV r0,r4
000074 f7fffffe BL GPIO_Init
;;;431 GPIO_Init(GPIOD, &GPIO_InitStructure);
000078 4669 MOV r1,sp
00007a 480d LDR r0,|L4.176|
00007c f7fffffe BL GPIO_Init
;;;432 GPIO_Init(GPIOE, &GPIO_InitStructure);
000080 4669 MOV r1,sp
000082 480c LDR r0,|L4.180|
000084 f7fffffe BL GPIO_Init
;;;433 GPIO_Init(GPIOF, &GPIO_InitStructure);
000088 4669 MOV r1,sp
00008a 480b LDR r0,|L4.184|
00008c f7fffffe BL GPIO_Init
;;;434 GPIO_Init(GPIOG, &GPIO_InitStructure);
000090 4669 MOV r1,sp
000092 4628 MOV r0,r5
000094 f7fffffe BL GPIO_Init
;;;435 }
000098 bd38 POP {r3-r5,pc}
;;;436
ENDP
00009a 0000 DCW 0x0000
|L4.156|
00009c 40010800 DCD 0x40010800
|L4.160|
0000a0 00000000 DCD ||.data||
|L4.164|
0000a4 40011000 DCD 0x40011000
|L4.168|
0000a8 40012000 DCD 0x40012000
|L4.172|
0000ac 40010c00 DCD 0x40010c00
|L4.176|
0000b0 40011400 DCD 0x40011400
|L4.180|
0000b4 40011800 DCD 0x40011800
|L4.184|
0000b8 40011c00 DCD 0x40011c00
AREA ||i.EnterSTOPMode_EXTI||, CODE, READONLY, ALIGN=2
EnterSTOPMode_EXTI PROC
;;;99 void EnterSTOPMode_EXTI(void)
;;;100 {
000000 e92d4ffe PUSH {r1-r11,lr}
;;;101 NVIC_InitTypeDef NVIC_InitStructure;
;;;102 EXTI_InitTypeDef EXTI_InitStructure;
;;;103
;;;104 STOPModeStatus = 0;
000004 4f47 LDR r7,|L5.292|
000006 2500 MOVS r5,#0
000008 603d STR r5,[r7,#0] ; STOPModeStatus
;;;105
;;;106 /* Clear the LCD */
;;;107 LCD_Clear(White);
00000a f64f76ff MOV r6,#0xffff
00000e 4630 MOV r0,r6
000010 f7fffffe BL LCD_Clear
;;;108
;;;109 /* Set the LCD Back Color */
;;;110 LCD_SetBackColor(Blue);
000014 201f MOVS r0,#0x1f
000016 f7fffffe BL LCD_SetBackColor
;;;111
;;;112 /* Set the LCD Text Color */
;;;113 LCD_SetTextColor(White);
00001a 4630 MOV r0,r6
00001c f7fffffe BL LCD_SetTextColor
;;;114
;;;115 /* Disable the JoyStick interrupts */
;;;116 IntExtOnOffConfig(DISABLE);
000020 2000 MOVS r0,#0
000022 f7fffffe BL IntExtOnOffConfig
;;;117
;;;118 while(ReadKey() != NOKEY)
000026 bf00 NOP
|L5.40|
000028 f7fffffe BL ReadKey
00002c 2800 CMP r0,#0
00002e d1fb BNE |L5.40|
;;;119 {
;;;120 }
;;;121
;;;122 /* Configure the EXTI Line 8 */
;;;123 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
000030 f88d5004 STRB r5,[sp,#4]
;;;124 EXTI_InitStructure.EXTI_Line = EXTI_Line8;
;;;125 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
000034 f04f0a0c MOV r10,#0xc
000038 f44f7980 MOV r9,#0x100 ;124
00003c f88da005 STRB r10,[sp,#5]
;;;126 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
000040 2401 MOVS r4,#1
000042 f8cd9000 STR r9,[sp,#0] ;125
000046 f88d4006 STRB r4,[sp,#6]
;;;127 EXTI_Init(&EXTI_InitStructure);
00004a 4668 MOV r0,sp
00004c f7fffffe BL EXTI_Init
;;;128
;;;129 /* Enable the EXTI0 Interrupt */
;;;130 NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
000050 f04f0817 MOV r8,#0x17
000054 f88d8008 STRB r8,[sp,#8]
;;;131 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
000058 f88d4009 STRB r4,[sp,#9]
;;;132 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
00005c f88d400a STRB r4,[sp,#0xa]
;;;133 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
000060 f88d400b STRB r4,[sp,#0xb]
;;;134 NVIC_Init(&NVIC_InitStructure);
000064 a802 ADD r0,sp,#8
000066 f7fffffe BL NVIC_Init
;;;135
;;;136 LCD_DisplayStringLine(Line4, " MCU in STOP Mode ");
00006a a12f ADR r1,|L5.296|
00006c 2060 MOVS r0,#0x60
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -