; generated by Component: ARM Compiler 5.06 update 7 (build 960) Tool: ArmCC [4d365d] ; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o..\list\gpio.o --asm_dir=..\List\ --list_dir=..\List\ --depend=..\list\gpio.d --cpu=Cortex-M3 --apcs=interwork -O0 --diag_suppress=9931 -I..\src\myprintf -I..\src\RTT -I.\RTE\_XWY -ID:\Keil\ARM\Packs\ARM\CMSIS\5.9.0\CMSIS\Core\Include -ID:\Keil\ARM\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__MICROLIB -D__UVISION_VERSION=538 -D_RTE_ -DSTM32F10X_HD -D_RTE_ -D_DEBUG --omf_browse=..\list\gpio.crf ..\src\GPIO.c] THUMB AREA ||i.GPIO_Configuration||, CODE, READONLY, ALIGN=2 GPIO_Configuration PROC ;;;15 *******************************************************************************/ ;;;16 void GPIO_Configuration(void) 000000 b500 PUSH {lr} ;;;17 { 000002 b09f SUB sp,sp,#0x7c ;;;18 GPIO_InitTypeDef GPIO_InitStructure; ;;;19 USART_InitTypeDef USART_InitStructure; ;;;20 USART_ClockInitTypeDef USART_ClockInitStructure; ;;;21 SPI_InitTypeDef SPI_InitStructure; ;;;22 DMA_InitTypeDef DMA_InitStructure; ;;;23 ADC_InitTypeDef ADC_InitStructure; ;;;24 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct; ;;;25 //EXTI_InitTypeDef EXTI_InitStructure; ;;;26 //I2C_InitTypeDef I2C_InitStructure; ;;;27 //DAC_InitTypeDef DAC_InitStructure; ;;;28 ;;;29 /*允许总线CLOCK,在使用GPIO之前必须允许相应端的时钟.*/ ;;;30 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 000004 2101 MOVS r1,#1 000006 4608 MOV r0,r1 000008 f7fffffe BL RCC_APB2PeriphClockCmd ;;;31 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 00000c 2101 MOVS r1,#1 00000e 2004 MOVS r0,#4 000010 f7fffffe BL RCC_APB2PeriphClockCmd ;;;32 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); 000014 2101 MOVS r1,#1 000016 2008 MOVS r0,#8 000018 f7fffffe BL RCC_APB2PeriphClockCmd ;;;33 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); 00001c 2101 MOVS r1,#1 00001e 2010 MOVS r0,#0x10 000020 f7fffffe BL RCC_APB2PeriphClockCmd ;;;34 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); 000024 2101 MOVS r1,#1 000026 2020 MOVS r0,#0x20 000028 f7fffffe BL RCC_APB2PeriphClockCmd ;;;35 ;;;36 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); 00002c 2101 MOVS r1,#1 00002e 0388 LSLS r0,r1,#14 000030 f7fffffe BL RCC_APB2PeriphClockCmd ;;;37 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); 000034 2101 MOVS r1,#1 000036 0248 LSLS r0,r1,#9 000038 f7fffffe BL RCC_APB2PeriphClockCmd ;;;38 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); 00003c 2101 MOVS r1,#1 00003e 0308 LSLS r0,r1,#12 000040 f7fffffe BL RCC_APB2PeriphClockCmd ;;;39 ;;;40 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); 000044 2101 MOVS r1,#1 000046 0488 LSLS r0,r1,#18 000048 f7fffffe BL RCC_APB1PeriphClockCmd ;;;41 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); 00004c 2101 MOVS r1,#1 00004e 2002 MOVS r0,#2 000050 f7fffffe BL RCC_APB1PeriphClockCmd ;;;42 //RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE); ;;;43 //RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); ;;;44 ;;;45 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); 000054 2101 MOVS r1,#1 000056 4608 MOV r0,r1 000058 f7fffffe BL RCC_AHBPeriphClockCmd ;;;46 ;;;47 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); 00005c 2101 MOVS r1,#1 00005e 48fe LDR r0,|L1.1112| 000060 f7fffffe BL GPIO_PinRemapConfig ;;;48 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); 000064 2101 MOVS r1,#1 000066 2004 MOVS r0,#4 000068 f7fffffe BL GPIO_PinRemapConfig ;;;49 ;;;50 ////////////////////////////////模拟输入////////////////////////////////// ;;;51 //PC0--CUR PC1--TEMP PC3--VREF ;;;52 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3; 00006c 200b MOVS r0,#0xb 00006e f8ad0078 STRH r0,[sp,#0x78] ;;;53 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; 000072 2000 MOVS r0,#0 000074 f88d007b STRB r0,[sp,#0x7b] ;;;54 GPIO_Init(GPIOC, &GPIO_InitStructure); 000078 a91e ADD r1,sp,#0x78 00007a 48f8 LDR r0,|L1.1116| 00007c f7fffffe BL GPIO_Init ;;;55 ;;;56 //PA0--COM PA1--VOM ;;;57 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; 000080 2003 MOVS r0,#3 000082 f8ad0078 STRH r0,[sp,#0x78] ;;;58 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; 000086 2000 MOVS r0,#0 000088 f88d007b STRB r0,[sp,#0x7b] ;;;59 GPIO_Init(GPIOA, &GPIO_InitStructure); 00008c a91e ADD r1,sp,#0x78 00008e 48f4 LDR r0,|L1.1120| 000090 f7fffffe BL GPIO_Init ;;;60 ;;;61 ////////////////////////////////输入////////////////////////////////// ;;;62 //PA2--TMP_INT PA11 PA12 PA15--K0,K1,K2 ;;;63 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_15; 000094 f6490004 MOV r0,#0x9804 000098 f8ad0078 STRH r0,[sp,#0x78] ;;;64 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入 00009c 2048 MOVS r0,#0x48 00009e f88d007b STRB r0,[sp,#0x7b] ;;;65 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度 0000a2 2003 MOVS r0,#3 0000a4 f88d007a STRB r0,[sp,#0x7a] ;;;66 GPIO_Init(GPIOA, &GPIO_InitStructure); // 0000a8 a91e ADD r1,sp,#0x78 0000aa 48ed LDR r0,|L1.1120| 0000ac f7fffffe BL GPIO_Init ;;;67 ;;;68 //PB0-PB2--IN1,IN2,IN3 PB3--K7 PB4--IO2 PB5--IO1 ;;;69 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5; 0000b0 203f MOVS r0,#0x3f 0000b2 f8ad0078 STRH r0,[sp,#0x78] ;;;70 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入 0000b6 2048 MOVS r0,#0x48 0000b8 f88d007b STRB r0,[sp,#0x7b] ;;;71 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度 0000bc 2003 MOVS r0,#3 0000be f88d007a STRB r0,[sp,#0x7a] ;;;72 GPIO_Init(GPIOB, &GPIO_InitStructure); // 0000c2 a91e ADD r1,sp,#0x78 0000c4 48e7 LDR r0,|L1.1124| 0000c6 f7fffffe BL GPIO_Init ;;;73 ;;;74 //PC4--ADC_DRDY PC10-PC12--K3,K4,K5 PC13-PC14--S1,S2 ;;;75 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14; 0000ca f6474010 MOV r0,#0x7c10 0000ce f8ad0078 STRH r0,[sp,#0x78] ;;;76 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入 0000d2 2048 MOVS r0,#0x48 0000d4 f88d007b STRB r0,[sp,#0x7b] ;;;77 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度 0000d8 2003 MOVS r0,#3 0000da f88d007a STRB r0,[sp,#0x7a] ;;;78 GPIO_Init(GPIOC, &GPIO_InitStructure); // 0000de a91e ADD r1,sp,#0x78 0000e0 48de LDR r0,|L1.1116| 0000e2 f7fffffe BL GPIO_Init ;;;79 ;;;80 //PD2--K6 ;;;81 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; 0000e6 2004 MOVS r0,#4 0000e8 f8ad0078 STRH r0,[sp,#0x78] ;;;82 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入 0000ec 2048 MOVS r0,#0x48 0000ee f88d007b STRB r0,[sp,#0x7b] ;;;83 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度 0000f2 2003 MOVS r0,#3 0000f4 f88d007a STRB r0,[sp,#0x7a] ;;;84 GPIO_Init(GPIOD, &GPIO_InitStructure); // 0000f8 a91e ADD r1,sp,#0x78 0000fa 48db LDR r0,|L1.1128| 0000fc f7fffffe BL GPIO_Init ;;;85 ;;;86 ////////////////////////////////输出////////////////////////////////// ;;;87 //PA3-PA4 PA8-PA10 ;;;88 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10; 000100 f44f60e3 MOV r0,#0x718 000104 f8ad0078 STRH r0,[sp,#0x78] ;;;89 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 000108 2010 MOVS r0,#0x10 00010a f88d007b STRB r0,[sp,#0x7b] ;;;90 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度 00010e 2003 MOVS r0,#3 000110 f88d007a STRB r0,[sp,#0x7a] ;;;91 GPIO_Init(GPIOA, &GPIO_InitStructure); //复位值为0 000114 a91e ADD r1,sp,#0x78 000116 48d2 LDR r0,|L1.1120| 000118 f7fffffe BL GPIO_Init ;;;92 GPIO_SetBits(GPIOA, GPIO_Pin_3); 00011c 2108 MOVS r1,#8 00011e 48d0 LDR r0,|L1.1120| 000120 f7fffffe BL GPIO_SetBits ;;;93 GPIO_SetBits(GPIOA, GPIO_Pin_4); 000124 2110 MOVS r1,#0x10 000126 48ce LDR r0,|L1.1120| 000128 f7fffffe BL GPIO_SetBits ;;;94 ;;;95 //PB8--SCL PB9--SDA ;;;96 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; 00012c f44f7040 MOV r0,#0x300 000130 f8ad0078 STRH r0,[sp,#0x78] ;;;97 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //开漏输出 000134 2014 MOVS r0,#0x14 000136 f88d007b STRB r0,[sp,#0x7b] ;;;98 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度 00013a 2003 MOVS r0,#3 00013c f88d007a STRB r0,[sp,#0x7a] ;;;99 GPIO_Init(GPIOB, &GPIO_InitStructure); //复位值为0 000140 a91e ADD r1,sp,#0x78 000142 48c8 LDR r0,|L1.1124| 000144 f7fffffe BL GPIO_Init ;;;100 ;;;101 //PB12-PB15 ;;;102 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; 000148 f24f0030 MOV r0,#0xf030 00014c f8ad0078 STRH r0,[sp,#0x78] ;;;103 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 000150 2010 MOVS r0,#0x10 000152 f88d007b STRB r0,[sp,#0x7b] ;;;104 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度 000156 2003 MOVS r0,#3 000158 f88d007a STRB r0,[sp,#0x7a] ;;;105 GPIO_Init(GPIOB, &GPIO_InitStructure); //复位值为0 00015c a91e ADD r1,sp,#0x78 00015e 48c1 LDR r0,|L1.1124| 000160 f7fffffe BL GPIO_Init ;;;106 GPIO_ResetBits(GPIOB, GPIO_Pin_4); 000164 2110 MOVS r1,#0x10 000166 48bf LDR r0,|L1.1124| 000168 f7fffffe BL GPIO_ResetBits ;;;107 GPIO_ResetBits(GPIOB, GPIO_Pin_5); 00016c 2120 MOVS r1,#0x20 00016e 48bd LDR r0,|L1.1124| 000170 f7fffffe BL GPIO_ResetBits ;;;108 ;;;109 //PC2--PWM PC5-PC9 PC15 ;;;110 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_15; 000174 f24830e4 MOV r0,#0x83e4 000178 f8ad0078 STRH r0,[sp,#0x78] ;;;111 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 00017c 2010 MOVS r0,#0x10 00017e f88d007b STRB r0,[sp,#0x7b] ;;;112 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度 000182 2003 MOVS r0,#3 000184 f88d007a STRB r0,[sp,#0x7a] ;;;113 GPIO_Init(GPIOC, &GPIO_InitStructure); //复位值为0 000188 a91e ADD r1,sp,#0x78 00018a 48b4 LDR r0,|L1.1116| 00018c f7fffffe BL GPIO_Init ;;;114 ;;;115 ////////////////////////////IIC1配置///////////////////////////////////// ;;;116 /*GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; ;;;117 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ;;;118 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; ;;;119 GPIO_Init(GPIOB, &GPIO_InitStructure); ;;;120 ;;;121 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; ;;;122 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ;;;123 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; ;;;124 GPIO_Init(GPIOB, &GPIO_InitStructure);*/ ;;;125 ;;;126 /*// PB6,7 SCL and SDA ;;;127 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; ;;;128 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; ;;;129 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; ;;;130 GPIO_Init(GPIOB, &GPIO_InitStructure); ;;;131 ;;;132 I2C_DeInit(I2C1); ;;;133 I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; ;;;134 I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; ;;;135 I2C_InitStructure.I2C_OwnAddress1 = 0x00; ;;;136 I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; ;;;137 I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; ;;;138 I2C_InitStructure.I2C_ClockSpeed =100000;//100K?? ;;;139 ;;;140 I2C_Cmd(I2C1, ENABLE); ;;;141 I2C_Init(I2C1, &I2C_InitStructure); ;;;142 I2C_AcknowledgeConfig(I2C1, ENABLE);*/ ;;;143 ;;;144 ////////////////////////////SPI1配置///////////////////////////////////// ;;;145 //PA5-SCK1,PA6-MISO1, PA7-MOSI1 ;;;146 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; 000190 20e0 MOVS r0,#0xe0 000192 f8ad0078 STRH r0,[sp,#0x78] ;;;147 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 000196 2003 MOVS r0,#3 000198 f88d007a STRB r0,[sp,#0x7a] ;;;148 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 00019c 2018 MOVS r0,#0x18 00019e f88d007b STRB r0,[sp,#0x7b] ;;;149 GPIO_Init(GPIOA, &GPIO_InitStructure); 0001a2 a91e ADD r1,sp,#0x78 0001a4 48ae LDR r0,|L1.1120| 0001a6 f7fffffe BL GPIO_Init ;;;150 ;;;151 //SPI1 configuration ;;;152 SPI_Cmd(SPI1, DISABLE); //必须先禁能,才能改变MODE 0001aa 2100 MOVS r1,#0 0001ac 48af LDR r0,|L1.1132| 0001ae f7fffffe BL SPI_Cmd ;;;153 SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //两线全双工 0001b2 2000 MOVS r0,#0 0001b4 f8ad004c STRH r0,[sp,#0x4c] ;;;154 SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //主 0001b8 f44f7082 MOV r0,#0x104 0001bc f8ad004e STRH r0,[sp,#0x4e] ;;;155 SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //8位 0001c0 2000 MOVS r0,#0 0001c2 f8ad0050 STRH r0,[sp,#0x50] ;;;156 SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //CPOL=0 时钟悬空高 0001c6 f8ad0052 STRH r0,[sp,#0x52] ;;;157 SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; //CPHA=1 数据捕获第2个 模式1 0001ca 2001 MOVS r0,#1 0001cc f8ad0054 STRH r0,[sp,#0x54] ;;;158 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //软件NSS 0001d0 0240 LSLS r0,r0,#9 0001d2 f8ad0056 STRH r0,[sp,#0x56] ;;;159 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; //16分频2.25M,AD最高5M 0001d6 2038 MOVS r0,#0x38 0001d8 f8ad0058 STRH r0,[sp,#0x58] ;;;160 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //高位在前 0001dc 2000 MOVS r0,#0 0001de f8ad005a STRH r0,[sp,#0x5a] ;;;161 SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC7 0001e2 2007 MOVS r0,#7 0001e4 f8ad005c STRH r0,[sp,#0x5c] ;;;162 ;;;163 SPI_Init(SPI1, &SPI_InitStructure); 0001e8 a913 ADD r1,sp,#0x4c 0001ea 48a0 LDR r0,|L1.1132| 0001ec f7fffffe BL SPI_Init ;;;164 SPI_Cmd(SPI1, ENABLE); 0001f0 2101 MOVS r1,#1 0001f2 489e LDR r0,|L1.1132| 0001f4 f7fffffe BL SPI_Cmd ;;;165 ;;;166 ////////////////////////////串口1(蓝牙通信)配置///////////////////////////////////// ;;;167 //PB6 USART1_Tx ;;;168 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; 0001f8 2040 MOVS r0,#0x40 0001fa f8ad0078 STRH r0,[sp,#0x78] ;;;169 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 0001fe 2003 MOVS r0,#3 000200 f88d007a STRB r0,[sp,#0x7a] ;;;170 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 000204 2018 MOVS r0,#0x18 000206 f88d007b STRB r0,[sp,#0x7b] ;;;171 GPIO_Init(GPIOB, &GPIO_InitStructure); 00020a a91e ADD r1,sp,#0x78 00020c 4895 LDR r0,|L1.1124| 00020e f7fffffe BL GPIO_Init ;;;172 //PB7 USART1_Rx ;;;173 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; 000212 2080 MOVS r0,#0x80 000214 f8ad0078 STRH r0,[sp,#0x78] ;;;174 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 000218 2048 MOVS r0,#0x48 00021a f88d007b STRB r0,[sp,#0x7b] ;;;175 GPIO_Init(GPIOB, &GPIO_InitStructure); 00021e a91e ADD r1,sp,#0x78 000220 4890 LDR r0,|L1.1124| 000222 f7fffffe BL GPIO_Init ;;;176 ;;;177 USART_InitStructure.USART_BaudRate = 9600; 000226 f44f5016 MOV r0,#0x2580 00022a 901a STR r0,[sp,#0x68] ;;;178 USART_InitStructure.USART_WordLength = USART_WordLength_8b; 00022c 2000 MOVS r0,#0 00022e f8ad006c STRH r0,[sp,#0x6c] ;;;179 USART_InitStructure.USART_StopBits = USART_StopBits_1; 000232 f8ad006e STRH r0,[sp,#0x6e] ;;;180 USART_InitStructure.USART_Parity = USART_Parity_No; 000236 f8ad0070 STRH r0,[sp,#0x70] ;;;181 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 00023a f8ad0074 STRH r0,[sp,#0x74] ;;;182 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 00023e 200c MOVS r0,#0xc 000240 f8ad0072 STRH r0,[sp,#0x72] ;;;183 ;;;184 USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; 000244 2000 MOVS r0,#0 000246 f8ad0060 STRH r0,[sp,#0x60] ;;;185 USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; 00024a f8ad0062 STRH r0,[sp,#0x62] ;;;186 USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; 00024e f44f7000 MOV r0,#0x200 000252 f8ad0064 STRH r0,[sp,#0x64] ;;;187 USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; 000256 2000 MOVS r0,#0 000258 f8ad0066 STRH r0,[sp,#0x66] ;;;188 USART_ClockInit(USART1, &USART_ClockInitStructure); 00025c a918 ADD r1,sp,#0x60 00025e 4884 LDR r0,|L1.1136| 000260 f7fffffe BL USART_ClockInit ;;;189 USART_Init(USART1, &USART_InitStructure); 000264 a91a ADD r1,sp,#0x68 000266 4882 LDR r0,|L1.1136| 000268 f7fffffe BL USART_Init ;;;190 ;;;191 USART_Cmd(USART1, ENABLE); 00026c 2101 MOVS r1,#1 00026e 4880 LDR r0,|L1.1136| 000270 f7fffffe BL USART_Cmd ;;;192 USART_ClearFlag(USART1, USART_FLAG_TC); /* 清发送外完成标志,Transmission Complete flag */ 000274 2140 MOVS r1,#0x40 000276 487e LDR r0,|L1.1136| 000278 f7fffffe BL USART_ClearFlag ;;;193 ;;;194 ////////////////////////////UART1 DMA串口接收配置 DMA1-5///////////////////////////////////// ;;;195 DMA_DeInit(DMA1_Channel5); 00027c 487d LDR r0,|L1.1140| 00027e f7fffffe BL DMA_DeInit ;;;196 DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)SRC_USART1_DR; //源头BUF 000282 487b LDR r0,|L1.1136| 000284 1d00 ADDS r0,r0,#4 000286 9008 STR r0,[sp,#0x20] ;;;197 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)Uart1_BTcom.UART_DMA_RXD_BUF_TEMP; //目标BUF 000288 487b LDR r0,|L1.1144| 00028a 9009 STR r0,[sp,#0x24] ;;;198 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //外设作源头 00028c 2000 MOVS r0,#0 00028e 900a STR r0,[sp,#0x28] ;;;199 DMA_InitStructure.DMA_BufferSize = UART_RXD_BUF_SIZE; //BUF大小 000290 f44f7080 MOV r0,#0x100 000294 900b STR r0,[sp,#0x2c] ;;;200 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址寄存器不递增 000296 2000 MOVS r0,#0 000298 900c STR r0,[sp,#0x30] ;;;201 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址递增 00029a 2080 MOVS r0,#0x80 00029c 900d STR r0,[sp,#0x34] ;;;202 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //外设字节为单位 00029e 2000 MOVS r0,#0 0002a0 900e STR r0,[sp,#0x38] ;;;203 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //内存字节为单位 0002a2 900f STR r0,[sp,#0x3c] ;;;204 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //循环模式 0002a4 2020 MOVS r0,#0x20 0002a6 9010 STR r0,[sp,#0x40] ;;;205 DMA_InitStructure.DMA_Priority = DMA_Priority_High; //4优先级之一的(高优先) 0002a8 0200 LSLS r0,r0,#8 0002aa 9011 STR r0,[sp,#0x44] ;;;206 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //非内存到内存 0002ac 2000 MOVS r0,#0 0002ae 9012 STR r0,[sp,#0x48] ;;;207 DMA_Init(DMA1_Channel5, &DMA_InitStructure); 0002b0 a908 ADD r1,sp,#0x20 0002b2 4870 LDR r0,|L1.1140| 0002b4 f7fffffe BL DMA_Init ;;;208 ;;;209 //DMA_ITConfig(DMA1_Channel5, DMA_IT_TC, ENABLE); //DMA5传输完成中断 ;;;210 ;;;211 USART_DMACmd(USART1, USART_DMAReq_Rx, ENABLE); //串口接收器DMA 0002b8 2201 MOVS r2,#1 0002ba 2140 MOVS r1,#0x40 0002bc 486c LDR r0,|L1.1136| 0002be f7fffffe BL USART_DMACmd ;;;212 ;;;213 DMA_Cmd(DMA1_Channel5, ENABLE); //正式允许DMA 0002c2 2101 MOVS r1,#1 0002c4 486b LDR r0,|L1.1140| 0002c6 f7fffffe BL DMA_Cmd ;;;214 ;;;215 Uart1_BTcom.UART_RXD_FINISH = 0; 0002ca 2000 MOVS r0,#0 0002cc 496b LDR r1,|L1.1148| 0002ce 7088 STRB r0,[r1,#2] ;;;216 Uart1_BTcom.UART_RXD_EN = 0; 0002d0 70c8 STRB r0,[r1,#3] ;;;217 Uart1_BTcom.UART_RXD_NUM_NOW = DMA_GetCurrDataCounter(DMA1_Channel5); 0002d2 4868 LDR r0,|L1.1140| 0002d4 f7fffffe BL DMA_GetCurrDataCounter 0002d8 4968 LDR r1,|L1.1148| 0002da 7048 STRB r0,[r1,#1] ;;;218 Uart1_BTcom.UART_RXD_NUM_LAST = DMA_GetCurrDataCounter(DMA1_Channel5); 0002dc 4865 LDR r0,|L1.1140| 0002de f7fffffe BL DMA_GetCurrDataCounter 0002e2 4966 LDR r1,|L1.1148| 0002e4 7008 STRB r0,[r1,#0] ;;;219 Uart1_BTcom.UART_RXD_BEGIN_POST = 0; 0002e6 2000 MOVS r0,#0 0002e8 8088 STRH r0,[r1,#4] ;;;220 Uart1_BTcom.UART_RXD_END_POST = 0; 0002ea 80c8 STRH r0,[r1,#6] ;;;221 Uart1_BTcom.UART_RXD_LENTH = 0; 0002ec 8108 STRH r0,[r1,#8] ;;;222 ;;;223 ////////////////////////////UART1 DMA串口发送配置 DMA1-4///////////////////////////////////// ;;;224 DMA_DeInit(DMA1_Channel4); 0002ee 4861 LDR r0,|L1.1140| 0002f0 3814 SUBS r0,r0,#0x14 0002f2 f7fffffe BL DMA_DeInit ;;;225 DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)SRC_USART1_DR; //源头BUF 0002f6 485e LDR r0,|L1.1136| 0002f8 1d00 ADDS r0,r0,#4 0002fa 9008 STR r0,[sp,#0x20] ;;;226 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)Uart1_BTcom.UART_DMA_TXD_BUF; //目标BUF 0002fc 4860 LDR r0,|L1.1152| 0002fe 9009 STR r0,[sp,#0x24] ;;;227 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; //内存作源头 000300 2010 MOVS r0,#0x10 000302 900a STR r0,[sp,#0x28] ;;;228 DMA_InitStructure.DMA_BufferSize = UART_TXD_BUF_SIZE; //BUF大小 000304 0100 LSLS r0,r0,#4 000306 900b STR r0,[sp,#0x2c] ;;;229 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //外设地址寄存器不递增 000308 2000 MOVS r0,#0 00030a 900c STR r0,[sp,#0x30] ;;;230 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //内存地址递增 00030c 2080 MOVS r0,#0x80 00030e 900d STR r0,[sp,#0x34] ;;;231 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //外设字节为单位 000310 2000 MOVS r0,#0 000312 900e STR r0,[sp,#0x38] ;;;232 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //内存字节为单位 000314 900f STR r0,[sp,#0x3c] ;;;233 DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //循环模式 000316 9010 STR r0,[sp,#0x40] ;;;234 DMA_InitStructure.DMA_Priority = DMA_Priority_High; //4优先级之一的(高优先) 000318 f44f5000 MOV r0,#0x2000 00031c 9011 STR r0,[sp,#0x44] ;;;235 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //非内存到内存 00031e 2000 MOVS r0,#0 000320 9012 STR r0,[sp,#0x48] ;;;236 DMA_Init(DMA1_Channel4, &DMA_InitStructure); 000322 a908 ADD r1,sp,#0x20 000324 4853 LDR r0,|L1.1140| 000326 3814 SUBS r0,r0,#0x14 000328 f7fffffe BL DMA_Init ;;;237 ;;;238 //DMA_ITConfig(DMA1_Channel5, DMA_IT_TC, ENABLE); //DMA5传输完成中断 ;;;239 USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE); //串口发送器DMA 00032c 2201 MOVS r2,#1 00032e 2180 MOVS r1,#0x80 000330 484f LDR r0,|L1.1136| 000332 f7fffffe BL USART_DMACmd ;;;240 //DMA_Cmd(DMA1_Channel4, ENABLE); ;;;241 ;;;242 ////////////////////////////串口3配置///////////////////////////////////// ;;;243 /* PB10 USART3_Tx */ ;;;244 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; 000336 f44f6080 MOV r0,#0x400 00033a f8ad0078 STRH r0,[sp,#0x78] ;;;245 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 00033e 2003 MOVS r0,#3 000340 f88d007a STRB r0,[sp,#0x7a] ;;;246 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽输出-TX 000344 2018 MOVS r0,#0x18 000346 f88d007b STRB r0,[sp,#0x7b] ;;;247 GPIO_Init(GPIOB, &GPIO_InitStructure); 00034a a91e ADD r1,sp,#0x78 00034c 4845 LDR r0,|L1.1124| 00034e f7fffffe BL GPIO_Init ;;;248 ;;;249 /* PB11 USART3_Rx */ ;;;250 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; 000352 f44f6000 MOV r0,#0x800 000356 f8ad0078 STRH r0,[sp,#0x78] ;;;251 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入-RX 00035a 2004 MOVS r0,#4 00035c f88d007b STRB r0,[sp,#0x7b] ;;;252 GPIO_Init(GPIOB, &GPIO_InitStructure); 000360 a91e ADD r1,sp,#0x78 000362 4840 LDR r0,|L1.1124| 000364 f7fffffe BL GPIO_Init ;;;253 ;;;254 USART_InitStructure.USART_BaudRate = 9600; 000368 f44f5016 MOV r0,#0x2580 00036c 901a STR r0,[sp,#0x68] ;;;255 USART_InitStructure.USART_WordLength = USART_WordLength_8b; 00036e 2000 MOVS r0,#0 000370 f8ad006c STRH r0,[sp,#0x6c] ;;;256 USART_InitStructure.USART_StopBits = USART_StopBits_1; 000374 f8ad006e STRH r0,[sp,#0x6e] ;;;257 USART_InitStructure.USART_Parity = USART_Parity_No; 000378 f8ad0070 STRH r0,[sp,#0x70] ;;;258 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 00037c f8ad0074 STRH r0,[sp,#0x74] ;;;259 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 000380 200c MOVS r0,#0xc 000382 f8ad0072 STRH r0,[sp,#0x72] ;;;260 ;;;261 USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; 000386 2000 MOVS r0,#0 000388 f8ad0060 STRH r0,[sp,#0x60] ;;;262 USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; 00038c f8ad0062 STRH r0,[sp,#0x62] ;;;263 USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; 000390 f44f7000 MOV r0,#0x200 000394 f8ad0064 STRH r0,[sp,#0x64] ;;;264 USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; 000398 2000 MOVS r0,#0 00039a f8ad0066 STRH r0,[sp,#0x66] ;;;265 USART_ClockInit(USART3, &USART_ClockInitStructure); 00039e a918 ADD r1,sp,#0x60 0003a0 4838 LDR r0,|L1.1156| 0003a2 f7fffffe BL USART_ClockInit ;;;266 USART_Init(USART3, &USART_InitStructure); 0003a6 a91a ADD r1,sp,#0x68 0003a8 4836 LDR r0,|L1.1156| 0003aa f7fffffe BL USART_Init ;;;267 ;;;268 USART_Cmd(USART3, ENABLE); 0003ae 2101 MOVS r1,#1 0003b0 4834 LDR r0,|L1.1156| 0003b2 f7fffffe BL USART_Cmd ;;;269 USART_ClearFlag(USART3, USART_FLAG_TC); /* ???????,Transmission Complete flag */ 0003b6 2140 MOVS r1,#0x40 0003b8 4832 LDR r0,|L1.1156| 0003ba f7fffffe BL USART_ClearFlag ;;;270 ;;;271 ////////////////////////////UART3 DMA?????? DMA1-3///////////////////////////////////// ;;;272 DMA_DeInit(DMA1_Channel3); 0003be 482d LDR r0,|L1.1140| 0003c0 3828 SUBS r0,r0,#0x28 0003c2 f7fffffe BL DMA_DeInit ;;;273 DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)SRC_USART3_DR; //??BUF 0003c6 482f LDR r0,|L1.1156| 0003c8 1d00 ADDS r0,r0,#4 0003ca 9008 STR r0,[sp,#0x20] ;;;274 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)Uart3_Debug.UART_DMA_RXD_BUF_TEMP; //??BUF 0003cc 482e LDR r0,|L1.1160| 0003ce 9009 STR r0,[sp,#0x24] ;;;275 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //????? 0003d0 2000 MOVS r0,#0 0003d2 900a STR r0,[sp,#0x28] ;;;276 DMA_InitStructure.DMA_BufferSize = UART_RXD_BUF_SIZE; //BUF?? 0003d4 f44f7080 MOV r0,#0x100 0003d8 900b STR r0,[sp,#0x2c] ;;;277 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //?????????? 0003da 2000 MOVS r0,#0 0003dc 900c STR r0,[sp,#0x30] ;;;278 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //?????? 0003de 2080 MOVS r0,#0x80 0003e0 900d STR r0,[sp,#0x34] ;;;279 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //??????? 0003e2 2000 MOVS r0,#0 0003e4 900e STR r0,[sp,#0x38] ;;;280 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //??????? 0003e6 900f STR r0,[sp,#0x3c] ;;;281 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //???? 0003e8 2020 MOVS r0,#0x20 0003ea 9010 STR r0,[sp,#0x40] ;;;282 DMA_InitStructure.DMA_Priority = DMA_Priority_High; //4??????(???) 0003ec 0200 LSLS r0,r0,#8 0003ee 9011 STR r0,[sp,#0x44] ;;;283 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //?????? 0003f0 2000 MOVS r0,#0 0003f2 9012 STR r0,[sp,#0x48] ;;;284 DMA_Init(DMA1_Channel3, &DMA_InitStructure); 0003f4 a908 ADD r1,sp,#0x20 0003f6 481f LDR r0,|L1.1140| 0003f8 3828 SUBS r0,r0,#0x28 0003fa f7fffffe BL DMA_Init ;;;285 ;;;286 //DMA_ITConfig(DMA1_Channel3, DMA_IT_TC, ENABLE); //DMA5?????? ;;;287 ;;;288 USART_DMACmd(USART3, USART_DMAReq_Rx, ENABLE); //?????DMA 0003fe 2201 MOVS r2,#1 000400 2140 MOVS r1,#0x40 000402 4820 LDR r0,|L1.1156| 000404 f7fffffe BL USART_DMACmd ;;;289 ;;;290 DMA_Cmd(DMA1_Channel3, ENABLE); //????DMA 000408 2101 MOVS r1,#1 00040a 481a LDR r0,|L1.1140| 00040c 3828 SUBS r0,r0,#0x28 00040e f7fffffe BL DMA_Cmd ;;;291 ;;;292 Uart3_Debug.UART_RXD_FINISH = 0; 000412 2000 MOVS r0,#0 000414 491d LDR r1,|L1.1164| 000416 7088 STRB r0,[r1,#2] ;;;293 Uart3_Debug.UART_RXD_EN = 0; 000418 70c8 STRB r0,[r1,#3] ;;;294 Uart3_Debug.UART_RXD_NUM_NOW = DMA_GetCurrDataCounter(DMA1_Channel3); 00041a 4816 LDR r0,|L1.1140| 00041c 3828 SUBS r0,r0,#0x28 00041e f7fffffe BL DMA_GetCurrDataCounter 000422 491a LDR r1,|L1.1164| 000424 7048 STRB r0,[r1,#1] ;;;295 Uart3_Debug.UART_RXD_NUM_LAST = DMA_GetCurrDataCounter(DMA1_Channel3); 000426 4813 LDR r0,|L1.1140| 000428 3828 SUBS r0,r0,#0x28 00042a f7fffffe BL DMA_GetCurrDataCounter 00042e 4917 LDR r1,|L1.1164| 000430 7008 STRB r0,[r1,#0] ;;;296 Uart3_Debug.UART_RXD_BEGIN_POST = 0; 000432 2000 MOVS r0,#0 000434 8088 STRH r0,[r1,#4] ;;;297 Uart3_Debug.UART_RXD_END_POST = 0; 000436 80c8 STRH r0,[r1,#6] ;;;298 Uart3_Debug.UART_RXD_LENTH = 0; 000438 8108 STRH r0,[r1,#8] ;;;299 ;;;300 ////////////////////////////UART3 DMA?????? DMA1-2///////////////////////////////////// ;;;301 DMA_DeInit(DMA1_Channel2); 00043a 480e LDR r0,|L1.1140| 00043c 383c SUBS r0,r0,#0x3c 00043e f7fffffe BL DMA_DeInit ;;;302 DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)SRC_USART3_DR; //??BUF 000442 4810 LDR r0,|L1.1156| 000444 1d00 ADDS r0,r0,#4 000446 9008 STR r0,[sp,#0x20] ;;;303 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)Uart3_Debug.UART_DMA_TXD_BUF; //??BUF 000448 4811 LDR r0,|L1.1168| 00044a 9009 STR r0,[sp,#0x24] ;;;304 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; //????? 00044c 2010 MOVS r0,#0x10 00044e 900a STR r0,[sp,#0x28] ;;;305 DMA_InitStructure.DMA_BufferSize = UART_TXD_BUF_SIZE; //BUF?? 000450 0100 LSLS r0,r0,#4 000452 900b STR r0,[sp,#0x2c] ;;;306 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //?????????? 000454 2000 MOVS r0,#0 000456 e01d B |L1.1172| |L1.1112| DCD 0x00300200 |L1.1116| DCD 0x40011000 |L1.1120| DCD 0x40010800 |L1.1124| DCD 0x40010c00 |L1.1128| DCD 0x40011400 |L1.1132| DCD 0x40013000 |L1.1136| DCD 0x40013800 |L1.1140| DCD 0x40020058 |L1.1144| DCD Uart1_BTcom+0x10c |L1.1148| DCD Uart1_BTcom |L1.1152| DCD Uart1_BTcom+0x20c |L1.1156| DCD 0x40004800 |L1.1160| DCD Uart3_Debug+0x10c |L1.1164| DCD Uart3_Debug |L1.1168| DCD Uart3_Debug+0x20c |L1.1172| 000494 900c STR r0,[sp,#0x30] ;;;307 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //?????? 000496 2080 MOVS r0,#0x80 000498 900d STR r0,[sp,#0x34] ;;;308 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; //??????? 00049a 2000 MOVS r0,#0 00049c 900e STR r0,[sp,#0x38] ;;;309 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; //??????? 00049e 900f STR r0,[sp,#0x3c] ;;;310 DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; //???? 0004a0 9010 STR r0,[sp,#0x40] ;;;311 DMA_InitStructure.DMA_Priority = DMA_Priority_High; //4??????(???) 0004a2 f44f5000 MOV r0,#0x2000 0004a6 9011 STR r0,[sp,#0x44] ;;;312 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //?????? 0004a8 2000 MOVS r0,#0 0004aa 9012 STR r0,[sp,#0x48] ;;;313 DMA_Init(DMA1_Channel2, &DMA_InitStructure); 0004ac a908 ADD r1,sp,#0x20 0004ae 4852 LDR r0,|L1.1528| 0004b0 f7fffffe BL DMA_Init ;;;314 ;;;315 //DMA_ITConfig(DMA1_Channel2, DMA_IT_TC, ENABLE); //DMA5?????? ;;;316 USART_DMACmd(USART3, USART_DMAReq_Tx, ENABLE); //?????DMA 0004b4 2201 MOVS r2,#1 0004b6 2180 MOVS r1,#0x80 0004b8 4850 LDR r0,|L1.1532| 0004ba f7fffffe BL USART_DMACmd ;;;317 //DMA_Cmd(DMA1_Channel2, ENABLE); ;;;318 ;;;319 ////////////////////////////////TIM3////////////////////////////////// ;;;320 TIM_DeInit(TIM3); 0004be 4850 LDR r0,|L1.1536| 0004c0 f7fffffe BL TIM_DeInit ;;;321 TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;//?????? 0004c4 2000 MOVS r0,#0 0004c6 f8ad0006 STRH r0,[sp,#6] ;;;322 TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;//?????? 0004ca f8ad0002 STRH r0,[sp,#2] ;;;323 TIM_TimeBaseInitStruct.TIM_Prescaler = 5;// 0004ce 2005 MOVS r0,#5 0004d0 f8ad0000 STRH r0,[sp,#0] ;;;324 TIM_TimeBaseInitStruct.TIM_Period = 23999;// 500Hz 0004d4 f64550bf MOV r0,#0x5dbf 0004d8 f8ad0004 STRH r0,[sp,#4] ;;;325 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStruct); 0004dc 4669 MOV r1,sp 0004de 4848 LDR r0,|L1.1536| 0004e0 f7fffffe BL TIM_TimeBaseInit ;;;326 ;;;327 TIM_SelectOutputTrigger (TIM3, TIM_TRGOSource_Update); 0004e4 2120 MOVS r1,#0x20 0004e6 4846 LDR r0,|L1.1536| 0004e8 f7fffffe BL TIM_SelectOutputTrigger ;;;328 ;;;329 ////////////////////////////////ADC1////////////////////////////////// ;;;330 /* Configure ADCCLK such as ADCCLK = PCLK2/8 */ ;;;331 RCC_ADCCLKConfig(RCC_PCLK2_Div8); //HQ 72/8=9M 0004ec f44f4040 MOV r0,#0xc000 0004f0 f7fffffe BL RCC_ADCCLKConfig ;;;332 ;;;333 //ADC1 ;;;334 ADC_DeInit(ADC1); 0004f4 4843 LDR r0,|L1.1540| 0004f6 f7fffffe BL ADC_DeInit ;;;335 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //???? 0004fa 2000 MOVS r0,#0 0004fc 9003 STR r0,[sp,#0xc] ;;;336 ADC_InitStructure.ADC_ScanConvMode = ENABLE; //??????? 0004fe 2001 MOVS r0,#1 000500 f88d0010 STRB r0,[sp,#0x10] ;;;337 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //???? 000504 f88d0011 STRB r0,[sp,#0x11] ;;;338 //ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //???? ;;;339 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO; //20201229 000508 04c0 LSLS r0,r0,#19 00050a 9005 STR r0,[sp,#0x14] ;;;340 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //??? 00050c 2000 MOVS r0,#0 00050e 9006 STR r0,[sp,#0x18] ;;;341 ADC_InitStructure.ADC_NbrOfChannel = 5; //?????? 000510 2005 MOVS r0,#5 000512 f88d001c STRB r0,[sp,#0x1c] ;;;342 ADC_Init(ADC1, &ADC_InitStructure); 000516 a903 ADD r1,sp,#0xc 000518 483a LDR r0,|L1.1540| 00051a f7fffffe BL ADC_Init ;;;343 ;;;344 /* ADC1 Regular Channel1 Configuration */ ;;;345 //TEMP CUR ;;;346 ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_239Cycles5); //???????,239.5??? 00051e 2307 MOVS r3,#7 000520 2201 MOVS r2,#1 000522 210a MOVS r1,#0xa 000524 4837 LDR r0,|L1.1540| 000526 f7fffffe BL ADC_RegularChannelConfig ;;;347 ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_239Cycles5); //???????,239.5??? 00052a 2307 MOVS r3,#7 00052c 2202 MOVS r2,#2 00052e 210b MOVS r1,#0xb 000530 4834 LDR r0,|L1.1540| 000532 f7fffffe BL ADC_RegularChannelConfig ;;;348 ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 3, ADC_SampleTime_239Cycles5); //???????,239.5??? 000536 2307 MOVS r3,#7 000538 2203 MOVS r2,#3 00053a 210d MOVS r1,#0xd 00053c 4831 LDR r0,|L1.1540| 00053e f7fffffe BL ADC_RegularChannelConfig ;;;349 ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 4, ADC_SampleTime_239Cycles5); //???????,239.5??? 000542 2307 MOVS r3,#7 000544 2204 MOVS r2,#4 000546 2100 MOVS r1,#0 000548 482e LDR r0,|L1.1540| 00054a f7fffffe BL ADC_RegularChannelConfig ;;;350 ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 5, ADC_SampleTime_239Cycles5); //???????,239.5??? 00054e 2307 MOVS r3,#7 000550 2205 MOVS r2,#5 000552 2101 MOVS r1,#1 000554 482b LDR r0,|L1.1540| 000556 f7fffffe BL ADC_RegularChannelConfig ;;;351 ;;;352 /* Enable ADC1 DMA */ ;;;353 ADC_DMACmd(ADC1, ENABLE); 00055a 2101 MOVS r1,#1 00055c 4829 LDR r0,|L1.1540| 00055e f7fffffe BL ADC_DMACmd ;;;354 ;;;355 /* Enable ADC1 */ ;;;356 ADC_Cmd(ADC1, ENABLE); 000562 2101 MOVS r1,#1 000564 4827 LDR r0,|L1.1540| 000566 f7fffffe BL ADC_Cmd ;;;357 ;;;358 /* Enable ADC1 reset calibaration register */ ;;;359 ADC_ResetCalibration(ADC1); 00056a 4826 LDR r0,|L1.1540| 00056c f7fffffe BL ADC_ResetCalibration ;;;360 /* Check the end of ADC1 reset calibration register */ ;;;361 while(ADC_GetResetCalibrationStatus(ADC1)); 000570 bf00 NOP |L1.1394| 000572 4824 LDR r0,|L1.1540| 000574 f7fffffe BL ADC_GetResetCalibrationStatus 000578 2800 CMP r0,#0 00057a d1fa BNE |L1.1394| ;;;362 ;;;363 /* Start ADC1 calibaration */ ;;;364 ADC_StartCalibration(ADC1); 00057c 4821 LDR r0,|L1.1540| 00057e f7fffffe BL ADC_StartCalibration ;;;365 /* Check the end of ADC1 calibration */ ;;;366 while(ADC_GetCalibrationStatus(ADC1)); 000582 bf00 NOP |L1.1412| 000584 481f LDR r0,|L1.1540| 000586 f7fffffe BL ADC_GetCalibrationStatus 00058a 2800 CMP r0,#0 00058c d1fa BNE |L1.1412| ;;;367 ;;;368 //////////////////////////////DMA??///////////////////////////////////////// ;;;369 /* DMA channel1 configuration ----------------------------------------------*/ ;;;370 DMA_DeInit(DMA1_Channel1); 00058e 481a LDR r0,|L1.1528| 000590 3814 SUBS r0,r0,#0x14 000592 f7fffffe BL DMA_DeInit ;;;371 DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; 000596 481b LDR r0,|L1.1540| 000598 304c ADDS r0,r0,#0x4c 00059a 9008 STR r0,[sp,#0x20] ;;;372 DMA_InitStructure.DMA_MemoryBaseAddr = (u32)MFL_PARA_A.Ad_Data_Temp; 00059c 481a LDR r0,|L1.1544| 00059e 9009 STR r0,[sp,#0x24] ;;;373 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; 0005a0 2000 MOVS r0,#0 0005a2 900a STR r0,[sp,#0x28] ;;;374 DMA_InitStructure.DMA_BufferSize = 2500; //HQ 0005a4 f64010c4 MOV r0,#0x9c4 0005a8 900b STR r0,[sp,#0x2c] ;;;375 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; 0005aa 2000 MOVS r0,#0 0005ac 900c STR r0,[sp,#0x30] ;;;376 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; 0005ae 2080 MOVS r0,#0x80 0005b0 900d STR r0,[sp,#0x34] ;;;377 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; 0005b2 0040 LSLS r0,r0,#1 0005b4 900e STR r0,[sp,#0x38] ;;;378 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; 0005b6 0080 LSLS r0,r0,#2 0005b8 900f STR r0,[sp,#0x3c] ;;;379 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; 0005ba 2020 MOVS r0,#0x20 0005bc 9010 STR r0,[sp,#0x40] ;;;380 DMA_InitStructure.DMA_Priority = DMA_Priority_High; 0005be 0200 LSLS r0,r0,#8 0005c0 9011 STR r0,[sp,#0x44] ;;;381 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; 0005c2 2000 MOVS r0,#0 0005c4 9012 STR r0,[sp,#0x48] ;;;382 DMA_Init(DMA1_Channel1, &DMA_InitStructure); 0005c6 a908 ADD r1,sp,#0x20 0005c8 480b LDR r0,|L1.1528| 0005ca 3814 SUBS r0,r0,#0x14 0005cc f7fffffe BL DMA_Init ;;;383 ;;;384 //DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE); // ;;;385 ;;;386 /* Enable DMA channel1 */ ;;;387 DMA_Cmd(DMA1_Channel1, ENABLE); 0005d0 2101 MOVS r1,#1 0005d2 4809 LDR r0,|L1.1528| 0005d4 3814 SUBS r0,r0,#0x14 0005d6 f7fffffe BL DMA_Cmd ;;;388 ;;;389 /* Start ADC1 Software Conversion */ // ;;;390 ADC_SoftwareStartConvCmd(ADC1, ENABLE); //HQ ???? 0005da 2101 MOVS r1,#1 0005dc 4809 LDR r0,|L1.1540| 0005de f7fffffe BL ADC_SoftwareStartConvCmd ;;;391 ADC_ExternalTrigConvCmd(ADC1, ENABLE); 0005e2 2101 MOVS r1,#1 0005e4 4807 LDR r0,|L1.1540| 0005e6 f7fffffe BL ADC_ExternalTrigConvCmd ;;;392 TIM_Cmd(TIM3, ENABLE); //使能TIM3 20210306 0005ea 2101 MOVS r1,#1 0005ec 4804 LDR r0,|L1.1536| 0005ee f7fffffe BL TIM_Cmd ;;;393 } 0005f2 b01f ADD sp,sp,#0x7c 0005f4 bd00 POP {pc} ;;;394 ENDP 0005f6 0000 DCW 0x0000 |L1.1528| DCD 0x4002001c |L1.1532| DCD 0x40004800 |L1.1536| DCD 0x40000400 |L1.1540| DCD 0x40012400 |L1.1544| DCD MFL_PARA_A+0xd36 AREA ||i.fputc||, CODE, READONLY, ALIGN=2 fputc PROC ;;;395 /*定义 fputc 此函数为printf所用*/ ;;;396 int fputc(int ch) 000000 b510 PUSH {r4,lr} ;;;397 { 000002 4604 MOV r4,r0 ;;;398 USART_SendData(USART1, (u8) ch); 000004 b2e1 UXTB r1,r4 000006 4806 LDR r0,|L2.32| 000008 f7fffffe BL USART_SendData ;;;399 /* Loop until the end of transmission */ ;;;400 while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET); 00000c bf00 NOP |L2.14| 00000e 2180 MOVS r1,#0x80 000010 4804 LDR r0,|L2.36| 000012 f7fffffe BL USART_GetFlagStatus 000016 2800 CMP r0,#0 000018 d0f9 BEQ |L2.14| ;;;401 return ch; 00001a 4620 MOV r0,r4 ;;;402 } 00001c bd10 POP {r4,pc} ENDP 00001e 0000 DCW 0x0000 |L2.32| DCD 0x40013800 |L2.36| DCD 0x40004800