📄 bsp_led.txt
字号:
; generated by ARM C/C++ Compiler, 4.1 [Build 561]
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\CpuRAM\Obj\bsp_led.o --depend=.\CpuRAM\Obj\bsp_led.d --cpu=Cortex-M3 --apcs=interwork -O0 --diag_suppress=870 -I..\..\Libraries\CMSIS\CM3\CoreSupport -I..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\User\bsp -I..\..\User\fatfs -I..\..\User -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_SRAM ..\..\User\bsp\bsp_led.c]
THUMB
AREA ||i.bsp_InitLed||, CODE, READONLY, ALIGN=2
bsp_InitLed PROC
;;;52 */
;;;53 void bsp_InitLed(void)
000000 b508 PUSH {r3,lr}
;;;54 {
;;;55 GPIO_InitTypeDef GPIO_InitStructure;
;;;56
;;;57 #if 1 /* 采用宏定义的方式初始化GPIO,以便于修改GPIO口线 */
;;;58 /* 打开GPIOF的时钟 */
;;;59 RCC_APB2PeriphClockCmd(GPIO_CLK_LED1 | GPIO_CLK_LED2 | GPIO_CLK_LED3 | GPIO_CLK_LED4, ENABLE);
000002 2101 MOVS r1,#1
000004 2080 MOVS r0,#0x80
000006 f7fffffe BL RCC_APB2PeriphClockCmd
;;;60
;;;61 /* 配置所有的LED指示灯GPIO为推挽输出模式 */
;;;62 /* 由于将GPIO设置为输出时,GPIO输出寄存器的值缺省是0,因此会驱动LED点亮
;;;63 这是我不希望的,因此在改变GPIO为输出前,先修改输出寄存器的值为1 */
;;;64 GPIO_SetBits(GPIO_PORT_LED1, GPIO_PIN_LED1);
00000a 2140 MOVS r1,#0x40
00000c 481a LDR r0,|L1.120|
00000e f7fffffe BL GPIO_SetBits
;;;65 GPIO_SetBits(GPIO_PORT_LED2, GPIO_PIN_LED2);
000012 2180 MOVS r1,#0x80
000014 4818 LDR r0,|L1.120|
000016 f7fffffe BL GPIO_SetBits
;;;66 GPIO_SetBits(GPIO_PORT_LED3, GPIO_PIN_LED3);
00001a f44f7180 MOV r1,#0x100
00001e 4816 LDR r0,|L1.120|
000020 f7fffffe BL GPIO_SetBits
;;;67 GPIO_SetBits(GPIO_PORT_LED4, GPIO_PIN_LED4);
000024 f44f7100 MOV r1,#0x200
000028 4813 LDR r0,|L1.120|
00002a f7fffffe BL GPIO_SetBits
;;;68
;;;69 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
00002e 2010 MOVS r0,#0x10
000030 f88d0003 STRB r0,[sp,#3]
;;;70 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000034 2003 MOVS r0,#3
000036 f88d0002 STRB r0,[sp,#2]
;;;71
;;;72 GPIO_InitStructure.GPIO_Pin = GPIO_PIN_LED1;
00003a 2040 MOVS r0,#0x40
00003c f8ad0000 STRH r0,[sp,#0]
;;;73 GPIO_Init(GPIO_PORT_LED1, &GPIO_InitStructure);
000040 4669 MOV r1,sp
000042 480d LDR r0,|L1.120|
000044 f7fffffe BL GPIO_Init
;;;74
;;;75 GPIO_InitStructure.GPIO_Pin = GPIO_PIN_LED2;
000048 2080 MOVS r0,#0x80
00004a f8ad0000 STRH r0,[sp,#0]
;;;76 GPIO_Init(GPIO_PORT_LED2, &GPIO_InitStructure);
00004e 4669 MOV r1,sp
000050 4809 LDR r0,|L1.120|
000052 f7fffffe BL GPIO_Init
;;;77
;;;78 GPIO_InitStructure.GPIO_Pin = GPIO_PIN_LED3;
000056 f44f7080 MOV r0,#0x100
00005a f8ad0000 STRH r0,[sp,#0]
;;;79 GPIO_Init(GPIO_PORT_LED3, &GPIO_InitStructure);
00005e 4669 MOV r1,sp
000060 4805 LDR r0,|L1.120|
000062 f7fffffe BL GPIO_Init
;;;80
;;;81 GPIO_InitStructure.GPIO_Pin = GPIO_PIN_LED4;
000066 f44f7000 MOV r0,#0x200
00006a f8ad0000 STRH r0,[sp,#0]
;;;82 GPIO_Init(GPIO_PORT_LED4, &GPIO_InitStructure);
00006e 4669 MOV r1,sp
000070 4801 LDR r0,|L1.120|
000072 f7fffffe BL GPIO_Init
;;;83 #else
;;;84 /* 打开GPIOF的时钟 */
;;;85 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);
;;;86
;;;87 /* 配置所有的LED指示灯GPIO为推挽输出模式 */
;;;88 /* 由于将GPIO设置为输出时,GPIO输出寄存器的值缺省是0,因此会驱动LED点亮
;;;89 这是我不希望的,因此在改变GPIO为输出前,先修改输出寄存器的值为1 */
;;;90 GPIO_SetBits(GPIOF, GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9);
;;;91 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
;;;92 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
;;;93 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
;;;94 GPIO_Init(GPIOF, &GPIO_InitStructure);
;;;95 #endif
;;;96 }
000076 bd08 POP {r3,pc}
;;;97
ENDP
|L1.120|
DCD 0x40011c00
AREA ||i.bsp_LedOff||, CODE, READONLY, ALIGN=2
bsp_LedOff PROC
;;;135 */
;;;136 void bsp_LedOff(uint8_t _no)
000000 1e41 SUBS r1,r0,#1
;;;137 {
;;;138 _no--;
000002 b2c8 UXTB r0,r1
;;;139
;;;140 if (_no == 0)
000004 b918 CBNZ r0,|L2.14|
;;;141 {
;;;142 GPIO_PORT_LED1->BSRR = GPIO_PIN_LED1;
000006 2140 MOVS r1,#0x40
000008 4a0a LDR r2,|L2.52|
00000a 6011 STR r1,[r2,#0]
00000c e011 B |L2.50|
|L2.14|
;;;143 }
;;;144 else if (_no == 1)
00000e 2801 CMP r0,#1
000010 d103 BNE |L2.26|
;;;145 {
;;;146 GPIO_PORT_LED2->BSRR = GPIO_PIN_LED2;
000012 2180 MOVS r1,#0x80
000014 4a07 LDR r2,|L2.52|
000016 6011 STR r1,[r2,#0]
000018 e00b B |L2.50|
|L2.26|
;;;147 }
;;;148 else if (_no == 2)
00001a 2802 CMP r0,#2
00001c d103 BNE |L2.38|
;;;149 {
;;;150 GPIO_PORT_LED3->BSRR = GPIO_PIN_LED3;
00001e 01c1 LSLS r1,r0,#7
000020 4a04 LDR r2,|L2.52|
000022 6011 STR r1,[r2,#0]
000024 e005 B |L2.50|
|L2.38|
;;;151 }
;;;152 else if (_no == 3)
000026 2803 CMP r0,#3
000028 d103 BNE |L2.50|
;;;153 {
;;;154 GPIO_PORT_LED4->BSRR = GPIO_PIN_LED4;
00002a f44f7100 MOV r1,#0x200
00002e 4a01 LDR r2,|L2.52|
000030 6011 STR r1,[r2,#0]
|L2.50|
;;;155 }
;;;156 }
000032 4770 BX lr
;;;157
ENDP
|L2.52|
DCD 0x40011c10
AREA ||i.bsp_LedOn||, CODE, READONLY, ALIGN=2
bsp_LedOn PROC
;;;105 */
;;;106 void bsp_LedOn(uint8_t _no)
000000 1e41 SUBS r1,r0,#1
;;;107 {
;;;108 _no--;
000002 b2c8 UXTB r0,r1
;;;109
;;;110 if (_no == 0)
000004 b918 CBNZ r0,|L3.14|
;;;111 {
;;;112 GPIO_PORT_LED1->BRR = GPIO_PIN_LED1;
000006 2140 MOVS r1,#0x40
000008 4a0a LDR r2,|L3.52|
00000a 6011 STR r1,[r2,#0]
00000c e011 B |L3.50|
|L3.14|
;;;113 }
;;;114 else if (_no == 1)
00000e 2801 CMP r0,#1
000010 d103 BNE |L3.26|
;;;115 {
;;;116 GPIO_PORT_LED2->BRR = GPIO_PIN_LED2;
000012 2180 MOVS r1,#0x80
000014 4a07 LDR r2,|L3.52|
000016 6011 STR r1,[r2,#0]
000018 e00b B |L3.50|
|L3.26|
;;;117 }
;;;118 else if (_no == 2)
00001a 2802 CMP r0,#2
00001c d103 BNE |L3.38|
;;;119 {
;;;120 GPIO_PORT_LED3->BRR = GPIO_PIN_LED3;
00001e 01c1 LSLS r1,r0,#7
000020 4a04 LDR r2,|L3.52|
000022 6011 STR r1,[r2,#0]
000024 e005 B |L3.50|
|L3.38|
;;;121 }
;;;122 else if (_no == 3)
000026 2803 CMP r0,#3
000028 d103 BNE |L3.50|
;;;123 {
;;;124 GPIO_PORT_LED4->BRR = GPIO_PIN_LED4;
00002a f44f7100 MOV r1,#0x200
00002e 4a01 LDR r2,|L3.52|
000030 6011 STR r1,[r2,#0]
|L3.50|
;;;125 }
;;;126 }
000032 4770 BX lr
;;;127
ENDP
|L3.52|
DCD 0x40011c14
AREA ||i.bsp_LedToggle||, CODE, READONLY, ALIGN=2
bsp_LedToggle PROC
;;;165 */
;;;166 void bsp_LedToggle(uint8_t _no)
000000 1e41 SUBS r1,r0,#1
;;;167 {
;;;168 _no--;
000002 b2c8 UXTB r0,r1
;;;169
;;;170 if (_no == 0)
000004 b938 CBNZ r0,|L4.22|
;;;171 {
;;;172 GPIO_PORT_LED1->ODR ^= GPIO_PIN_LED1;
000006 4913 LDR r1,|L4.84|
000008 6809 LDR r1,[r1,#0]
00000a f0810140 EOR r1,r1,#0x40
00000e 4a12 LDR r2,|L4.88|
000010 f8c21c0c STR r1,[r2,#0xc0c]
000014 e01c B |L4.80|
|L4.22|
;;;173 }
;;;174 else if (_no == 1)
000016 2801 CMP r0,#1
000018 d107 BNE |L4.42|
;;;175 {
;;;176 GPIO_PORT_LED2->ODR ^= GPIO_PIN_LED2;
00001a 490e LDR r1,|L4.84|
00001c 6809 LDR r1,[r1,#0]
00001e f0810180 EOR r1,r1,#0x80
000022 4a0d LDR r2,|L4.88|
000024 f8c21c0c STR r1,[r2,#0xc0c]
000028 e012 B |L4.80|
|L4.42|
;;;177 }
;;;178 else if (_no == 2)
00002a 2802 CMP r0,#2
00002c d107 BNE |L4.62|
;;;179 {
;;;180 GPIO_PORT_LED3->ODR ^= GPIO_PIN_LED3;
00002e 4909 LDR r1,|L4.84|
000030 6809 LDR r1,[r1,#0]
000032 f4817180 EOR r1,r1,#0x100
000036 4a08 LDR r2,|L4.88|
000038 f8c21c0c STR r1,[r2,#0xc0c]
00003c e008 B |L4.80|
|L4.62|
;;;181 }
;;;182 else if (_no == 3)
00003e 2803 CMP r0,#3
000040 d106 BNE |L4.80|
;;;183 {
;;;184 GPIO_PORT_LED4->ODR ^= GPIO_PIN_LED4;
000042 4904 LDR r1,|L4.84|
000044 6809 LDR r1,[r1,#0]
000046 f4817100 EOR r1,r1,#0x200
00004a 4a03 LDR r2,|L4.88|
00004c f8c21c0c STR r1,[r2,#0xc0c]
|L4.80|
;;;185 }
;;;186 }
000050 4770 BX lr
ENDP
000052 0000 DCW 0x0000
|L4.84|
DCD 0x40011c0c
|L4.88|
DCD 0x40011000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -