📄 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.\output\main.o --depend=.\output\main.d --device=DARMSTM --apcs=interwork -O3 -I.\ -ID:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\output\main.crf main.c]
THUMB
AREA ||i.Buffercmp||, CODE, READONLY, ALIGN=1
Buffercmp PROC
000000 b510 PUSH {r4,lr}
000002 e007 B |L1.20|
|L1.4|
000004 7803 LDRB r3,[r0,#0]
000006 780c LDRB r4,[r1,#0]
000008 42a3 CMP r3,r4
00000a d001 BEQ |L1.16|
00000c 2000 MOVS r0,#0
00000e bd10 POP {r4,pc}
|L1.16|
000010 1c40 ADDS r0,r0,#1
000012 1c49 ADDS r1,r1,#1
|L1.20|
000014 0013 MOVS r3,r2
000016 f1a20201 SUB r2,r2,#1
00001a b292 UXTH r2,r2
00001c d1f2 BNE |L1.4|
00001e 2001 MOVS r0,#1
000020 bd10 POP {r4,pc}
ENDP
AREA ||i.GPIO_Configuration||, CODE, READONLY, ALIGN=2
GPIO_Configuration PROC
;;;232 void GPIO_Configuration(void)
;;;233 {
000000 b538 PUSH {r3-r5,lr}
;;;234 GPIO_InitTypeDef GPIO_InitStructure;
;;;235
;;;236 /* Configure SPI1 pins: SCK, MISO and MOSI ---------------------------------*/
;;;237 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
000002 20e0 MOVS r0,#0xe0
000004 f8ad0000 STRH r0,[sp,#0]
;;;238 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000008 2403 MOVS r4,#3
00000a f88d4002 STRB r4,[sp,#2]
;;;239 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
00000e 2018 MOVS r0,#0x18
000010 f88d0003 STRB r0,[sp,#3]
;;;240 GPIO_Init(GPIOA, &GPIO_InitStructure);
000014 4669 MOV r1,sp
000016 480d LDR r0,|L2.76|
000018 f7fffffe BL GPIO_Init
;;;241
;;;242 /* Configure SPI2 pins: SCK, MISO and MOSI ---------------------------------*/
;;;243 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
00001c f44f4060 MOV r0,#0xe000
;;;244 GPIO_Init(GPIOC, &GPIO_InitStructure);
000020 4d0b LDR r5,|L2.80|
000022 f8ad0000 STRH r0,[sp,#0] ;243
000026 4669 MOV r1,sp
000028 4628 MOV r0,r5
00002a f7fffffe BL GPIO_Init
;;;245
;;;246 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_6 | GPIO_Pin_7;
00002e f44f7070 MOV r0,#0x3c0
000032 f8ad0000 STRH r0,[sp,#0]
;;;247 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000036 f88d4002 STRB r4,[sp,#2]
;;;248 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
00003a 2010 MOVS r0,#0x10
00003c f88d0003 STRB r0,[sp,#3]
;;;249 GPIO_Init(GPIOC, &GPIO_InitStructure);
000040 4669 MOV r1,sp
000042 4628 MOV r0,r5
000044 f7fffffe BL GPIO_Init
;;;250 }
000048 bd38 POP {r3-r5,pc}
;;;251
ENDP
00004a 0000 DCW 0x0000
|L2.76|
00004c 40010800 DCD 0x40010800
|L2.80|
000050 40011000 DCD 0x40011000
AREA ||i.NVIC_Configuration||, CODE, READONLY, ALIGN=1
NVIC_Configuration PROC
000000 2100 MOVS r1,#0
000002 f04f6000 MOV r0,#0x8000000
000006 f7ffbffe B.W NVIC_SetVectorTable
ENDP
AREA ||i.RCC_Configuration||, CODE, READONLY, ALIGN=2
RCC_Configuration PROC
;;;170 void RCC_Configuration(void)
;;;171 {
000000 b570 PUSH {r4-r6,lr}
;;;172 /* RCC system reset(for debug purpose) */
;;;173 RCC_DeInit();
000002 f7fffffe BL RCC_DeInit
;;;174
;;;175 /* Enable HSE */
;;;176 RCC_HSEConfig(RCC_HSE_ON);
000006 f44f3580 MOV r5,#0x10000
00000a 4628 MOV r0,r5
00000c f7fffffe BL RCC_HSEConfig
;;;177
;;;178 /* Wait till HSE is ready */
;;;179 HSEStartUpStatus = RCC_WaitForHSEStartUp();
000010 f7fffffe BL RCC_WaitForHSEStartUp
000014 491a LDR r1,|L4.128|
000016 71c8 STRB r0,[r1,#7] ; HSEStartUpStatus
;;;180
;;;181 if(HSEStartUpStatus == SUCCESS)
000018 b2c0 UXTB r0,r0
00001a 2801 CMP r0,#1
00001c d124 BNE |L4.104|
;;;182 {
;;;183 /* HCLK = SYSCLK */
;;;184 RCC_HCLKConfig(RCC_SYSCLK_Div1);
00001e 2000 MOVS r0,#0
000020 f7fffffe BL RCC_HCLKConfig
;;;185
;;;186 /* PCLK2 = HCLK/2 */
;;;187 RCC_PCLK2Config(RCC_HCLK_Div2);
000024 11ac ASRS r4,r5,#6
000026 4620 MOV r0,r4
000028 f7fffffe BL RCC_PCLK2Config
;;;188
;;;189 /* PCLK1 = HCLK/2 */
;;;190 RCC_PCLK1Config(RCC_HCLK_Div2);
00002c 4620 MOV r0,r4
00002e f7fffffe BL RCC_PCLK1Config
;;;191
;;;192 /* Flash 2 wait state */
;;;193 FLASH_SetLatency(FLASH_Latency_2);
000032 2002 MOVS r0,#2
000034 f7fffffe BL FLASH_SetLatency
;;;194 /* Enable Prefetch Buffer */
;;;195 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
000038 2010 MOVS r0,#0x10
00003a f7fffffe BL FLASH_PrefetchBufferCmd
;;;196
;;;197 /* PLLCLK = 8MHz * 9 = 72 MHz */
;;;198 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
00003e f44f11e0 MOV r1,#0x1c0000
000042 4628 MOV r0,r5
000044 f7fffffe BL RCC_PLLConfig
;;;199
;;;200 /* Enable PLL */
;;;201 RCC_PLLCmd(ENABLE);
000048 2001 MOVS r0,#1
00004a f7fffffe BL RCC_PLLCmd
|L4.78|
;;;202
;;;203 /* Wait till PLL is ready */
;;;204 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
00004e 2039 MOVS r0,#0x39
000050 f7fffffe BL RCC_GetFlagStatus
000054 2800 CMP r0,#0
000056 d0fa BEQ |L4.78|
;;;205 {
;;;206 }
;;;207
;;;208 /* Select PLL as system clock source */
;;;209 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
000058 2002 MOVS r0,#2
00005a f7fffffe BL RCC_SYSCLKConfig
;;;210
;;;211 /* Wait till PLL is used as system clock source */
;;;212 while(RCC_GetSYSCLKSource() != 0x08)
00005e bf00 NOP
|L4.96|
000060 f7fffffe BL RCC_GetSYSCLKSource
000064 2808 CMP r0,#8
000066 d1fb BNE |L4.96|
|L4.104|
;;;213 {
;;;214 }
;;;215 }
;;;216
;;;217 /* Enable peripheral clocks --------------------------------------------------*/
;;;218 /* GPIOA, GPIOC and SPI1 clock enable */
;;;219 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC |
000068 2101 MOVS r1,#1
00006a f2410014 MOV r0,#0x1014
00006e f7fffffe BL RCC_APB2PeriphClockCmd
;;;220 RCC_APB2Periph_SPI1, ENABLE);
;;;221 /* SPI2 Periph clock enable */
;;;222 RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
000072 e8bd4070 POP {r4-r6,lr}
000076 2101 MOVS r1,#1
000078 0388 LSLS r0,r1,#14
00007a f7ffbffe B.W RCC_APB1PeriphClockCmd
;;;223 }
;;;224
ENDP
00007e 0000 DCW 0x0000
|L4.128|
000080 00000000 DCD ||.data||
AREA ||i.main||, CODE, READONLY, ALIGN=2
main PROC
;;;48 int main(void)
;;;49 {
000000 e92d5ff0 PUSH {r4-r12,lr}
;;;50 #ifdef DEBUG
;;;51 debug();
;;;52 #endif
;;;53
;;;54 /* System clocks configuration ---------------------------------------------*/
;;;55 RCC_Configuration();
000004 f7fffffe BL RCC_Configuration
;;;56
;;;57 /* NVIC configuration ------------------------------------------------------*/
;;;58 NVIC_Configuration();
000008 f7fffffe BL NVIC_Configuration
;;;59
;;;60 /* GPIO configuration ------------------------------------------------------*/
;;;61 GPIO_Configuration();
00000c f7fffffe BL GPIO_Configuration
;;;62
;;;63 /* 1st phase: SPI1 Master and SPI2 Slave */
;;;64 /* SPI1 Config -------------------------------------------------------------*/
;;;65 SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
000010 4c77 LDR r4,|L5.496|
000012 f04f0b00 MOV r11,#0
000016 f8a4b000 STRH r11,[r4,#0] ; SPI_InitStructure
;;;66 SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
00001a f44f7082 MOV r0,#0x104
00001e 8060 STRH r0,[r4,#2] ; SPI_InitStructure
;;;67 SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
000020 f8a4b004 STRH r11,[r4,#4] ; SPI_InitStructure
;;;68 SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
000024 f8a4b006 STRH r11,[r4,#6] ; SPI_InitStructure
;;;69 SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
000028 2001 MOVS r0,#1
00002a 8120 STRH r0,[r4,#8] ; SPI_InitStructure
;;;70 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
00002c 0240 LSLS r0,r0,#9
00002e 8160 STRH r0,[r4,#0xa] ; SPI_InitStructure
;;;71 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
000030 2008 MOVS r0,#8
000032 81a0 STRH r0,[r4,#0xc] ; SPI_InitStructure
;;;72 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;
000034 2080 MOVS r0,#0x80
000036 81e0 STRH r0,[r4,#0xe] ; SPI_InitStructure
;;;73 SPI_InitStructure.SPI_CRCPolynomial = 7;
000038 2007 MOVS r0,#7
;;;74 SPI_Init(SPI1, &SPI_InitStructure);
00003a 4e6e LDR r6,|L5.500|
00003c 8220 STRH r0,[r4,#0x10] ;73 ; SPI_InitStructure
00003e 4621 MOV r1,r4
000040 4630 MOV r0,r6
000042 f7fffffe BL SPI_Init
;;;75
;;;76 /* SPI2 Config -------------------------------------------------------------*/
;;;77 SPI_InitStructure.SPI_Mode = SPI_Mode_Slave;
;;;78 SPI_Init(SPI2, &SPI_InitStructure);
000046 4d6c LDR r5,|L5.504|
000048 f8a4b002 STRH r11,[r4,#2] ;77 ; SPI_InitStructure
00004c 4621 MOV r1,r4
00004e 4628 MOV r0,r5
000050 f7fffffe BL SPI_Init
;;;79
;;;80 /* Enable SPI1 */
;;;81 SPI_Cmd(SPI1, ENABLE);
000054 2101 MOVS r1,#1
000056 4630 MOV r0,r6
000058 f7fffffe BL SPI_Cmd
;;;82 /* Enable SPI2 */
;;;83 SPI_Cmd(SPI2, ENABLE);
00005c 2101 MOVS r1,#1
00005e 4628 MOV r0,r5
000060 f7fffffe BL SPI_Cmd
000064 4f65 LDR r7,|L5.508|
000066 f1040912 ADD r9,r4,#0x12
00006a f1040a32 ADD r10,r4,#0x32
00006e f1a70820 SUB r8,r7,#0x20
000072 f1a70428 SUB r4,r7,#0x28
;;;84
;;;85 /* Transfer procedure */
;;;86 while(Tx_Idx<BufferSize)
000076 e02c B |L5.210|
|L5.120|
;;;87 {
;;;88 /* Wait for SPI1 Tx buffer empty */
;;;89 while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)==RESET);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -