📄 main.txt
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\main.o --depend=.\Obj\main.d --device=DARMSTM --apcs=interwork -O0 -Otime -I..\..\Libraries\CMSIS\Core\CM3 -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\Source\inc -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER ..\..\Source\src\main.c]
THUMB
AREA ||i.DispLogo||, CODE, READONLY, ALIGN=2
DispLogo PROC
;;;167 */
;;;168 static void DispLogo(void)
000000 b510 PUSH {r4,lr}
;;;169 {
;;;170 /* 通过串口输出例程名和更新日期 */
;;;171 PrintfLogo(EXAMPLE_NAME, EXAMPLE_DATE);
000002 a102 ADR r1,|L1.12|
000004 a004 ADR r0,|L1.24|
000006 f7fffffe BL PrintfLogo
;;;172 }
00000a bd10 POP {r4,pc}
;;;173
ENDP
|L1.12|
00000c 323031302d30332d313600 DCB "2010-03-16",0
000017 00 DCB 0
|L1.24|
000018 5446542044534f2044656d6f00 DCB "TFT DSO Demo",0
000025 00 DCB 0
000026 00 DCB 0
000027 00 DCB 0
AREA ||i.GPIO_Configuration||, CODE, READONLY, ALIGN=2
GPIO_Configuration PROC
;;;90 */
;;;91 void GPIO_Configuration(void)
000000 b508 PUSH {r3,lr}
;;;92 {
;;;93 GPIO_InitTypeDef GPIO_InitStructure;
;;;94
;;;95 /* 第1步:打开GPIOA GPIOC GPIOD GPIOF GPIOG的时钟
;;;96 注意:这个地方可以一次性全打开
;;;97 */
;;;98 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC
000002 2101 MOVS r1,#1
000004 f44f70da MOV r0,#0x1b4
000008 f7fffffe BL RCC_APB2PeriphClockCmd
;;;99 | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG,
;;;100 ENABLE);
;;;101
;;;102 /* 第2步:配置所有的按键GPIO为浮动输入模式(实际上CPUf复位后就是输入状态) */
;;;103 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
00000c 2001 MOVS r0,#1
00000e f8ad0000 STRH r0,[sp,#0]
;;;104 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
000012 2004 MOVS r0,#4
000014 f88d0003 STRB r0,[sp,#3]
;;;105 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000018 2003 MOVS r0,#3
00001a f88d0002 STRB r0,[sp,#2]
;;;106 GPIO_Init(GPIOA, &GPIO_InitStructure); /* PA0 */
00001e 4669 MOV r1,sp
000020 4816 LDR r0,|L2.124|
000022 f7fffffe BL GPIO_Init
;;;107
;;;108 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
000026 f44f5000 MOV r0,#0x2000
00002a f8ad0000 STRH r0,[sp,#0]
;;;109 GPIO_Init(GPIOC, &GPIO_InitStructure); /* PC13 */
00002e 4669 MOV r1,sp
000030 4813 LDR r0,|L2.128|
000032 f7fffffe BL GPIO_Init
;;;110
;;;111 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
000036 2008 MOVS r0,#8
000038 f8ad0000 STRH r0,[sp,#0]
;;;112 GPIO_Init(GPIOD, &GPIO_InitStructure); /* PD3 */
00003c 4669 MOV r1,sp
00003e 4811 LDR r0,|L2.132|
000040 f7fffffe BL GPIO_Init
;;;113
;;;114 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_13
000044 f24e1080 MOV r0,#0xe180
000048 f8ad0000 STRH r0,[sp,#0]
;;;115 | GPIO_Pin_14 | GPIO_Pin_15;
;;;116 GPIO_Init(GPIOG, &GPIO_InitStructure); /* PG7,8,13,14,15 */
00004c 4669 MOV r1,sp
00004e 480e LDR r0,|L2.136|
000050 f7fffffe BL GPIO_Init
;;;117
;;;118 /* 第3步:配置所有的LED指示灯GPIO为推挽输出模式 */
;;;119 /* 由于将GPIO设置为输出时,GPIO输出寄存器的值缺省是0,因此会驱动LED点亮
;;;120 这是我不希望的,因此在改变GPIO为输出前,先修改输出寄存器的值为1 */
;;;121 GPIO_SetBits(GPIOF, GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9);
000054 f44f7170 MOV r1,#0x3c0
000058 480c LDR r0,|L2.140|
00005a f7fffffe BL GPIO_SetBits
;;;122 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
00005e f44f7070 MOV r0,#0x3c0
000062 f8ad0000 STRH r0,[sp,#0]
;;;123 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
000066 2010 MOVS r0,#0x10
000068 f88d0003 STRB r0,[sp,#3]
;;;124 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00006c 2003 MOVS r0,#3
00006e f88d0002 STRB r0,[sp,#2]
;;;125 GPIO_Init(GPIOF, &GPIO_InitStructure);
000072 4669 MOV r1,sp
000074 4805 LDR r0,|L2.140|
000076 f7fffffe BL GPIO_Init
;;;126 }
00007a bd08 POP {r3,pc}
;;;127
ENDP
|L2.124|
DCD 0x40010800
|L2.128|
DCD 0x40011000
|L2.132|
DCD 0x40011400
|L2.136|
DCD 0x40012000
|L2.140|
DCD 0x40011c00
AREA ||i.InitBoard||, CODE, READONLY, ALIGN=2
InitBoard PROC
;;;133 */
;;;134 static void InitBoard(void)
000000 b510 PUSH {r4,lr}
;;;135 {
;;;136 /*
;;;137 这个函数是ST库中的函数,函数实体在
;;;138 Libraries\CMSIS\Core\CM3\system_stm32f10x.c
;;;139
;;;140 配置内部Flash接口,初始化PLL,配置系统频率
;;;141 系统时钟缺省配置为72MHz,你如果需要更改,则需要去修改相关的头文件中的宏定义
;;;142 */
;;;143 SystemInit();
000002 f7fffffe BL SystemInit
;;;144
;;;145 /* 配置按键GPIO和LED GPIO */
;;;146 GPIO_Configuration();
000006 f7fffffe BL GPIO_Configuration
;;;147
;;;148 /* 配置串口 */
;;;149 USART_Configuration();
00000a f7fffffe BL USART_Configuration
;;;150
;;;151 /* 在 SysTick_Config()前,必须先调用 */
;;;152 InitButtonVar();
00000e f7fffffe BL InitButtonVar
;;;153
;;;154 /* 配置systic作为1ms中断,这个函数在
;;;155 \Libraries\CMSIS\Core\CM3\core_cm3.h */
;;;156 SysTick_Config(SystemFrequency / 1000);
000012 4916 LDR r1,|L3.108|
000014 6809 LDR r1,[r1,#0] ; SystemFrequency
000016 f44f727a MOV r2,#0x3e8
00001a fbb1f0f2 UDIV r0,r1,r2
00001e f1b07f80 CMP r0,#0x1000000
000022 d300 BCC |L3.38|
000024 e01c B |L3.96|
|L3.38|
000026 f020417f BIC r1,r0,#0xff000000
00002a 1e49 SUBS r1,r1,#1
00002c f04f22e0 MOV r2,#0xe000e000
000030 6151 STR r1,[r2,#0x14]
000032 bf00 NOP
000034 1751 ASRS r1,r2,#29
000036 2900 CMP r1,#0
000038 da05 BGE |L3.70|
00003a 210f MOVS r1,#0xf
00003c 0109 LSLS r1,r1,#4
00003e 4a0c LDR r2,|L3.112|
000040 230b MOVS r3,#0xb
000042 54d1 STRB r1,[r2,r3]
000044 e004 B |L3.80|
|L3.70|
000046 210f MOVS r1,#0xf
000048 0109 LSLS r1,r1,#4
00004a 4a0a LDR r2,|L3.116|
00004c 1753 ASRS r3,r2,#29
00004e 54d1 STRB r1,[r2,r3]
|L3.80|
000050 bf00 NOP
000052 2100 MOVS r1,#0
000054 f04f22e0 MOV r2,#0xe000e000
000058 6191 STR r1,[r2,#0x18]
00005a 2107 MOVS r1,#7
00005c 6111 STR r1,[r2,#0x10]
00005e bf00 NOP
|L3.96|
;;;157
;;;158 /* 通过串口输出例程名和更新日期 */
;;;159 PrintfLogo(EXAMPLE_NAME, EXAMPLE_DATE);
000060 a105 ADR r1,|L3.120|
000062 a008 ADR r0,|L3.132|
000064 f7fffffe BL PrintfLogo
;;;160 }
000068 bd10 POP {r4,pc}
;;;161
ENDP
00006a 0000 DCW 0x0000
|L3.108|
DCD SystemFrequency
|L3.112|
DCD 0xe000ed18
|L3.116|
DCD 0xe000e400
|L3.120|
000078 323031302d30332d313600 DCB "2010-03-16",0
000083 00 DCB 0
|L3.132|
000084 5446542044534f2044656d6f00 DCB "TFT DSO Demo",0
000091 00 DCB 0
000092 00 DCB 0
000093 00 DCB 0
AREA ||i.main||, CODE, READONLY, ALIGN=1
main PROC
;;;60 */
;;;61 int main(void)
000000 b510 PUSH {r4,lr}
;;;62 {
;;;63 InitBoard(); /* 为了是main函数看起来更简洁些,我们将初始化的代码封装到这个函数 */
000002 f7fffffe BL InitBoard
;;;64 DispLogo(); /* 显示例程Logo */
000006 f7fffffe BL DispLogo
;;;65 DsoMain(); /* 进入DSO主程序 */
00000a f7fffffe BL DsoMain
;;;66 }
00000e 2000 MOVS r0,#0
000010 bd10 POP {r4,pc}
;;;67
ENDP
__ARM_use_no_argv EQU 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -