📄 main.lst
字号:
\ 0000007A 0220 MOVS R0,#+2
\ 0000007C ........ BL RCC_SYSCLKConfig
228 }
\ 00000080 01B0 ADD SP,SP,#+4
\ 00000082 00BD POP {PC} ;; return
229 /************************************************************************/
230 // Pos = (GetADC1Channel(ADC_Channel_15)*100);
231 /************************************************************************/
\ In section .XML, align 4, keep-with-next
232 Int16U GetADC1Channel(Int8U chanel)
233 {
\ GetADC1Channel:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
234 // Configure channel
235 ADC_RegularChannelConfig(ADC1, chanel, 1, ADC_SampleTime_55Cycles5);
\ 00000004 0523 MOVS R3,#+5
\ 00000006 0122 MOVS R2,#+1
\ 00000008 2100 MOVS R1,R4
\ 0000000A C9B2 UXTB R1,R1 ;; ZeroExtS R1,R1,#+24,#+24
\ 0000000C .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 0000000E ........ BL ADC_RegularChannelConfig
236
237 // Start the conversion
238 ADC_SoftwareStartConvCmd(ADC1, ENABLE);
\ 00000012 0121 MOVS R1,#+1
\ 00000014 .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 00000016 ........ BL ADC_SoftwareStartConvCmd
239
240 // Wait until conversion completion
241 while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
\ ??GetADC1Channel_0:
\ 0000001A 0221 MOVS R1,#+2
\ 0000001C .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 0000001E ........ BL ADC_GetFlagStatus
\ 00000022 0028 CMP R0,#+0
\ 00000024 F9D0 BEQ.N ??GetADC1Channel_0
242
243 // Get the conversion value
244 return ADC_GetConversionValue(ADC1);
\ 00000026 .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 00000028 ........ BL ADC_GetConversionValue
\ 0000002C 10BD POP {R4,PC} ;; return
245 }
246 //////////////////////////////////////////////////////////////////
247 //////////////////////////////////////////////////////////////////
\ In section .XML, align 4, keep-with-next
248 void InitADC1(void)
249 {
\ InitADC1:
\ 00000000 00B5 PUSH {LR}
\ 00000002 87B0 SUB SP,SP,#+28
250 GPIO_InitTypeDef GPIO_InitStructure;
251 ADC_InitTypeDef ADC_InitStructure;
252
253 // ADC init
254 // ADC Deinit
255 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
\ 00000004 0121 MOVS R1,#+1
\ 00000006 5FF40070 MOVS R0,#+512
\ 0000000A ........ BL RCC_APB2PeriphClockCmd
256 ADC_DeInit(ADC1);
\ 0000000E .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 00000010 ........ BL ADC_DeInit
257
258 // RC5 - analog input
259 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
\ 00000014 0820 MOVS R0,#+8
\ 00000016 ADF80000 STRH R0,[SP, #+0]
260 GPIO_InitStructure.GPIO_Speed = (GPIOSpeed_TypeDef)0;
\ 0000001A 0020 MOVS R0,#+0
\ 0000001C 8DF80200 STRB R0,[SP, #+2]
261 GPIO_InitStructure.GPIO_Mode = (GPIOMode_TypeDef)GPIO_Mode_AIN;
\ 00000020 0020 MOVS R0,#+0
\ 00000022 8DF80300 STRB R0,[SP, #+3]
262 GPIO_Init (GPIOC, &GPIO_InitStructure);
\ 00000026 6946 MOV R1,SP
\ 00000028 .... LDR.N R0,??DataTable19 ;; 0x40011000
\ 0000002A ........ BL GPIO_Init
263
264 // ADC Structure Initialization
265 ADC_StructInit(&ADC_InitStructure);
\ 0000002E 01A8 ADD R0,SP,#+4
\ 00000030 ........ BL ADC_StructInit
266
267 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
\ 00000034 0020 MOVS R0,#+0
\ 00000036 0190 STR R0,[SP, #+4]
268 ADC_InitStructure.ADC_ScanConvMode = DISABLE;
\ 00000038 0020 MOVS R0,#+0
\ 0000003A 8DF80800 STRB R0,[SP, #+8]
269 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
\ 0000003E 0020 MOVS R0,#+0
\ 00000040 8DF80900 STRB R0,[SP, #+9]
270 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
\ 00000044 5FF46020 MOVS R0,#+917504
\ 00000048 0390 STR R0,[SP, #+12]
271 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
\ 0000004A 0020 MOVS R0,#+0
\ 0000004C 0490 STR R0,[SP, #+16]
272 ADC_InitStructure.ADC_NbrOfChannel = 1;
\ 0000004E 0120 MOVS R0,#+1
\ 00000050 8DF81400 STRB R0,[SP, #+20]
273 ADC_Init(ADC1, &ADC_InitStructure);
\ 00000054 01A9 ADD R1,SP,#+4
\ 00000056 .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 00000058 ........ BL ADC_Init
274
275 // Enable the ADC
276 ADC_Cmd(ADC1, ENABLE);
\ 0000005C 0121 MOVS R1,#+1
\ 0000005E .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 00000060 ........ BL ADC_Cmd
277
278 // ADC calibration
279 // Enable ADC1 reset calibaration register
280 ADC_ResetCalibration(ADC1);
\ 00000064 .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 00000066 ........ BL ADC_ResetCalibration
281 // Check the end of ADC1 reset calibration register
282 while(ADC_GetResetCalibrationStatus(ADC1) == SET);
\ ??InitADC1_0:
\ 0000006A .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 0000006C ........ BL ADC_GetResetCalibrationStatus
\ 00000070 0128 CMP R0,#+1
\ 00000072 FAD0 BEQ.N ??InitADC1_0
283
284 // Start ADC1 calibaration
285 ADC_StartCalibration(ADC1);
\ 00000074 .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 00000076 ........ BL ADC_StartCalibration
286 // Check the end of ADC1 calibration
287 while(ADC_GetCalibrationStatus(ADC1) == SET);
\ ??InitADC1_1:
\ 0000007A .... LDR.N R0,??DataTable11 ;; 0x40012400
\ 0000007C ........ BL ADC_GetCalibrationStatus
\ 00000080 0128 CMP R0,#+1
\ 00000082 FAD0 BEQ.N ??InitADC1_1
288
289 }
\ 00000084 07B0 ADD SP,SP,#+28
\ 00000086 00BD POP {PC} ;; return
290
291
292
\ In section .XML, align 4, keep-with-next
293 void ADC_TEMP(Int16U *p)
294 {
\ ADC_TEMP:
\ 00000000 F1B5 PUSH {R0,R4-R7,LR}
\ 00000002 0400 MOVS R4,R0
295 Int16U a,c;
296 Int32U b;
297 static Int16U ADC_COUNT;
298 static Int16U TAD[8];
299 a=GetADC1Channel(ADC_Channel_13);
\ 00000004 0D20 MOVS R0,#+13
\ 00000006 ........ BL GetADC1Channel
\ 0000000A 0500 MOVS R5,R0
300 TAD[7]=TAD[6];
\ 0000000C 2A48 LDR.N R0,??ADC_TEMP_0 ;; ??TAD + 14
\ 0000000E 2B49 LDR.N R1,??ADC_TEMP_0+0x4 ;; ??TAD + 12
\ 00000010 0988 LDRH R1,[R1, #+0]
\ 00000012 0180 STRH R1,[R0, #+0]
301 TAD[6]=TAD[5];
\ 00000014 2948 LDR.N R0,??ADC_TEMP_0+0x4 ;; ??TAD + 12
\ 00000016 2A49 LDR.N R1,??ADC_TEMP_0+0x8 ;; ??TAD + 10
\ 00000018 0988 LDRH R1,[R1, #+0]
\ 0000001A 0180 STRH R1,[R0, #+0]
302 TAD[5]=TAD[4];
\ 0000001C 2848 LDR.N R0,??ADC_TEMP_0+0x8 ;; ??TAD + 10
\ 0000001E 2949 LDR.N R1,??ADC_TEMP_0+0xC ;; ??TAD + 8
\ 00000020 0988 LDRH R1,[R1, #+0]
\ 00000022 0180 STRH R1,[R0, #+0]
303 TAD[4]=TAD[3];
\ 00000024 2748 LDR.N R0,??ADC_TEMP_0+0xC ;; ??TAD + 8
\ 00000026 2849 LDR.N R1,??ADC_TEMP_0+0x10 ;; ??TAD + 6
\ 00000028 0988 LDRH R1,[R1, #+0]
\ 0000002A 0180 STRH R1,[R0, #+0]
304 TAD[3]=TAD[2];
\ 0000002C 2648 LDR.N R0,??ADC_TEMP_0+0x10 ;; ??TAD + 6
\ 0000002E 2749 LDR.N R1,??ADC_TEMP_0+0x14 ;; ??TAD + 4
\ 00000030 0988 LDRH R1,[R1, #+0]
\ 00000032 0180 STRH R1,[R0, #+0]
305 TAD[2]=TAD[1];
\ 00000034 2548 LDR.N R0,??ADC_TEMP_0+0x14 ;; ??TAD + 4
\ 00000036 2649 LDR.N R1,??ADC_TEMP_0+0x18 ;; ??TAD + 2
\ 00000038 0988 LDRH R1,[R1, #+0]
\ 0000003A 0180 STRH R1,[R0, #+0]
306 TAD[1]=TAD[0];
\ 0000003C 2448 LDR.N R0,??ADC_TEMP_0+0x18 ;; ??TAD + 2
\ 0000003E 2549 LDR.N R1,??ADC_TEMP_0+0x1C ;; ??TAD
\ 00000040 0988 LDRH R1,[R1, #+0]
\ 00000042 0180 STRH R1,[R0, #+0]
307 TAD[0]=a;
\ 00000044 2348 LDR.N R0,??ADC_TEMP_0+0x1C ;; ??TAD
\ 00000046 0580 STRH R5,[R0, #+0]
308 if(++ADC_COUNT>=5)
\ 00000048 2348 LDR.N R0,??ADC_TEMP_0+0x20 ;; ??ADC_COUNT
\ 0000004A 0088 LDRH R0,[R0, #+0]
\ 0000004C 401C ADDS R0,R0,#+1
\ 0000004E 2249 LDR.N R1,??ADC_TEMP_0+0x20 ;; ??ADC_COUNT
\ 00000050 0880 STRH R0,[R1, #+0]
\ 00000052 80B2 UXTH R0,R0 ;; ZeroExtS R0,R0,#+16,#+16
\ 00000054 0528 CMP R0,#+5
\ 00000056 2DD3 BCC.N ??ADC_TEMP_1
309 {
310 ADC_COUNT=0;
\ 00000058 1F48 LDR.N R0,??ADC_TEMP_0+0x20 ;; ??ADC_COUNT
\ 0000005A 0021 MOVS R1,#+0
\ 0000005C 0180 STRH R1,[R0, #+0]
311 b=0;
\ 0000005E 0020 MOVS R0,#+0
\ 00000060 0700 MOVS R7,R0
312 for(a=0;a<8;a++)
\ 00000062 0020 MOVS R0,#+0
\ 00000064 0500 MOVS R5,R0
\ ??ADC_TEMP_2:
\ 00000066 ADB2 UXTH R5,R5 ;; ZeroExtS R5,R5,#+16,#+16
\ 00000068 082D CMP R5,#+8
\ 0000006A 07D2 BCS.N ??ADC_TEMP_3
313 b+=TAD[a];
\ 0000006C ADB2 UXTH R5,R5 ;; ZeroExtS R5,R5,#+16,#+16
\ 0000006E 0220 MOVS R0,#+2
\ 00000070 6843 MULS R0,R5,R0
\ 00000072 1849 LDR.N R1,??ADC_TEMP_0+0x1C ;; ??TAD
\ 00000074 085A LDRH R0,[R1, R0]
\ 00000076 3F18 ADDS R7,R7,R0
\ 00000078 6D1C ADDS R5,R5,#+1
\ 0000007A F4E7 B.N ??ADC_TEMP_2
314 b=b/8;
\ ??ADC_TEMP_3:
\ 0000007C FF08 LSRS R7,R7,#+3
315 b>>=4;
\ 0000007E 3F09 LSRS R7,R7,#+4
316 c=TEMP_TAB[0];
\ 00000080 1648 LDR.N R0,??ADC_TEMP_0+0x24 ;; TEMP_TAB
\ 00000082 0088 LDRH R0,[R0, #+0]
\ 00000084 0600 MOVS R6,R0
317 for(a=0;a<130&&(c>b);)
\ 00000086 0020 MOVS R0,#+0
\ 00000088 0500 MOVS R5,R0
\ ??ADC_TEMP_4:
\ 0000008A ADB2 UXTH R5,R5 ;; ZeroExtS R5,R5,#+16,#+16
\ 0000008C 822D CMP R5,#+130
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -