📄 adc12.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.30A/W32 08/Nov/2005 12:06:34 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = D:\Book-IAR\examples_ST\STR71x_ADC\source\adc12.c #
# Command line = D:\Book-IAR\examples_ST\STR71x_ADC\source\adc12.c #
# -lC D:\Book-IAR\examples_ST\STR71x_ADC\Debug\List\ #
# -o D:\Book-IAR\examples_ST\STR71x_ADC\Debug\Obj\ #
# -s2 --no_cse --no_unroll --no_inline #
# --no_code_motion --no_tbaa --no_clustering #
# --no_scheduling --debug --cpu_mode arm --endian #
# little --cpu ARM7TDMI --stack_align 4 --interwork #
# -e --fpu None --dlib_config "d:\IAR #
# Systems\Embedded Workbench #
# 4.0\arm\LIB\dl4tpainl8n.h" -I #
# D:\Book-IAR\examples_ST\STR71x_ADC\ -I #
# D:\Book-IAR\examples_ST\STR71x_ADC\include\ -I #
# D:\Book-IAR\examples_ST\STR71x_ADC\source\ -I #
# "d:\IAR Systems\Embedded Workbench 4.0\arm\INC\" #
# List file = D:\Book-IAR\examples_ST\STR71x_ADC\Debug\List\adc12. #
# lst #
# Object file = D:\Book-IAR\examples_ST\STR71x_ADC\Debug\Obj\adc12.r #
# 79 #
# #
# #
##############################################################################
D:\Book-IAR\examples_ST\STR71x_ADC\source\adc12.c
1 // adc12.c
2 #include "adc12.h"
3
4 /*******************************************************************************
5 * 说明:ADC12_Init函数,初始化ADC
6 * 参数:无
7 * 返回值:无
8 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
9 void ADC12_Init(void) {
10 ADC12->CSR = 0x00;
\ ADC12_Init:
\ 00000000 ........ LDR R0,??DataTable16 ;; ADC12
\ 00000004 000090E5 LDR R0,[R0, #+0]
\ 00000008 0010A0E3 MOV R1,#+0
\ 0000000C B012C0E1 STRH R1,[R0, #+0x20]
11 ADC12->CPR = 0x01;
\ 00000010 ........ LDR R0,??DataTable16 ;; ADC12
\ 00000014 000090E5 LDR R0,[R0, #+0]
\ 00000018 0110A0E3 MOV R1,#+0x1
\ 0000001C B013C0E1 STRH R1,[R0, #+0x30]
12 }
\ 00000020 1EFF2FE1 BX LR ;; return
13
14 /*******************************************************************************
15 * 说明:ADC12_PrescalerConfig函数,配置预定标器
16 * 参数:无
17 * 返回值:无
18 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
19 void ADC12_PrescalerConfig(u32 Adc12_clk) {
\ ADC12_PrescalerConfig:
\ 00000000 10402DE9 STMDB SP!,{R4,LR} ;; Push
\ 00000004 0040A0E1 MOV R4,R0
20 ADC12->CPR = (vu16) (RCCU_FrequencyValue(RCCU_PCLK)/(Adc12_clk*512*8));
\ 00000008 0300A0E3 MOV R0,#+0x3
\ 0000000C ........ _BLF RCCU_FrequencyValue,RCCU_FrequencyValue??rA
\ 00000010 ........ LDR R1,??DataTable16 ;; ADC12
\ 00000014 002091E5 LDR R2,[R1, #+0]
\ 00000018 403DA0E3 MOV R3,#+0x1000
\ 0000001C 930411E0 MULS R1,R3,R4
\ 00000020 ........ _BLF ??divu32_a,??rA??divu32_a
\ 00000024 B013C2E1 STRH R1,[R2, #+0x30]
21 }
\ 00000028 1040BDE8 LDMIA SP!,{R4,LR} ;; Pop
\ 0000002C 1EFF2FE1 BX LR ;; return
22
23 /*******************************************************************************
24 * 说明:ADC12_ITConfig函数,允许/禁止中断
25 * 参数:NewState=ENABLE->允许中断
26 * NewState=ENABLE->禁止中断
27 * 返回值:无
28 *******************************************************************************/
\ In segment CODE, align 4, keep-with-next
29 void ADC12_ITConfig(FunctionalState NewState) {
30 if (NewState == ENABLE) {
\ ADC12_ITConfig:
\ 00000000 010050E3 CMP R0,#+0x1
\ 00000004 3A00001A BNE ??ADC12_ITConfig_0
31 if (ADC12->CSR & 0x0040) {
\ 00000008 ........ LDR R1,??DataTable16 ;; ADC12
\ 0000000C 001091E5 LDR R1,[R1, #+0]
\ 00000010 B012D1E1 LDRH R1,[R1, #+0x20]
\ 00000014 400011E3 TST R1,#+0x40
\ 00000018 2D00000A BEQ ??ADC12_ITConfig_1
32 switch (ADC12->CSR & 0x30) { // 置位中断位与通道选择等效
\ 0000001C ........ LDR R1,??DataTable16 ;; ADC12
\ 00000020 001091E5 LDR R1,[R1, #+0]
\ 00000024 B012D1E1 LDRH R1,[R1, #+0x20]
\ 00000028 301011E2 ANDS R1,R1,#+0x30
\ 0000002C FF1011E2 ANDS R1,R1,#+0xFF ;; Zero extend
\ 00000030 000051E3 CMP R1,#+0
\ 00000034 0600000A BEQ ??ADC12_ITConfig_2
\ 00000038 100051E3 CMP R1,#+0x10
\ 0000003C 0C00000A BEQ ??ADC12_ITConfig_3
\ 00000040 200051E3 CMP R1,#+0x20
\ 00000044 1200000A BEQ ??ADC12_ITConfig_4
\ 00000048 300051E3 CMP R1,#+0x30
\ 0000004C 1800000A BEQ ??ADC12_ITConfig_5
\ 00000050 300000EA B ??ADC12_ITConfig_6
33 case 0x00 : ADC12->CSR |= ADC12_IT0_Mask; break;
\ ??ADC12_ITConfig_2:
\ 00000054 ........ LDR R1,??DataTable16 ;; ADC12
\ 00000058 001091E5 LDR R1,[R1, #+0]
\ 0000005C ........ LDR R2,??DataTable16 ;; ADC12
\ 00000060 002092E5 LDR R2,[R2, #+0]
\ 00000064 B022D2E1 LDRH R2,[R2, #+0x20]
\ 00000068 402F92E3 ORRS R2,R2,#+0x100
\ 0000006C B022C1E1 STRH R2,[R1, #+0x20]
\ 00000070 280000EA B ??ADC12_ITConfig_6
34 case 0x10 : ADC12->CSR |= ADC12_IT1_Mask; break;
\ ??ADC12_ITConfig_3:
\ 00000074 ........ LDR R1,??DataTable16 ;; ADC12
\ 00000078 001091E5 LDR R1,[R1, #+0]
\ 0000007C ........ LDR R2,??DataTable16 ;; ADC12
\ 00000080 002092E5 LDR R2,[R2, #+0]
\ 00000084 B022D2E1 LDRH R2,[R2, #+0x20]
\ 00000088 802F92E3 ORRS R2,R2,#+0x200
\ 0000008C B022C1E1 STRH R2,[R1, #+0x20]
\ 00000090 200000EA B ??ADC12_ITConfig_6
35 case 0x20 : ADC12->CSR |= ADC12_IT2_Mask; break;
\ ??ADC12_ITConfig_4:
\ 00000094 ........ LDR R1,??DataTable16 ;; ADC12
\ 00000098 001091E5 LDR R1,[R1, #+0]
\ 0000009C ........ LDR R2,??DataTable16 ;; ADC12
\ 000000A0 002092E5 LDR R2,[R2, #+0]
\ 000000A4 B022D2E1 LDRH R2,[R2, #+0x20]
\ 000000A8 402E92E3 ORRS R2,R2,#+0x400
\ 000000AC B022C1E1 STRH R2,[R1, #+0x20]
\ 000000B0 180000EA B ??ADC12_ITConfig_6
36 case 0x30 : ADC12->CSR |= ADC12_IT3_Mask; break;
\ ??ADC12_ITConfig_5:
\ 000000B4 ........ LDR R1,??DataTable16 ;; ADC12
\ 000000B8 001091E5 LDR R1,[R1, #+0]
\ 000000BC ........ LDR R2,??DataTable16 ;; ADC12
\ 000000C0 002092E5 LDR R2,[R2, #+0]
\ 000000C4 B022D2E1 LDRH R2,[R2, #+0x20]
\ 000000C8 802E92E3 ORRS R2,R2,#+0x800
\ 000000CC B022C1E1 STRH R2,[R1, #+0x20]
\ 000000D0 100000EA B ??ADC12_ITConfig_6
37 }
38 }
39 else
40 ADC12->CSR |= ADC12_IT_Mask; // 循环方式,置位所有中断位
\ ??ADC12_ITConfig_1:
\ 000000D4 ........ LDR R1,??DataTable16 ;; ADC12
\ 000000D8 001091E5 LDR R1,[R1, #+0]
\ 000000DC ........ LDR R2,??DataTable16 ;; ADC12
\ 000000E0 002092E5 LDR R2,[R2, #+0]
\ 000000E4 B022D2E1 LDRH R2,[R2, #+0x20]
\ 000000E8 F02E92E3 ORRS R2,R2,#+0xF00
\ 000000EC B022C1E1 STRH R2,[R1, #+0x20]
\ 000000F0 080000EA B ??ADC12_ITConfig_6
41 }
42 else
43 ADC12->CSR &= ~ADC12_IT_Mask; // 清除所有中断位
\ ??ADC12_ITConfig_0:
\ 000000F4 ........ LDR R1,??DataTable16 ;; ADC12
\ 000000F8 001091E5 LDR R1,[R1, #+0]
\ 000000FC ........ LDR R2,??DataTable16 ;; ADC12
\ 00000100 002092E5 LDR R2,[R2, #+0]
\ 00000104 B022D2E1 LDRH R2,[R2, #+0x20]
\ 00000108 FF30A0E3 MOV R3,#+0xFF
\ 0000010C F03C83E3 ORR R3,R3,#+0xF000
\ 00000110 022013E0 ANDS R2,R3,R2
\ 00000114 B022C1E1 STRH R2,[R1, #+0x20]
44 }
\ ??ADC12_ITConfig_6:
\ 00000118 1EFF2FE1 BX LR ;; return
\ In segment CODE, align 4, keep-with-next
\ ??DataTable16:
\ 00000000 ........ DC32 ADC12
45
Maximum stack usage in bytes:
Function CSTACK
-------- ------
ADC12_ITConfig 0
ADC12_Init 0
ADC12_PrescalerConfig 8
Segment part sizes:
Function/Label Bytes
-------------- -----
ADC12_Init 36
ADC12_PrescalerConfig 48
ADC12_ITConfig 284
??DataTable16 4
Others 36
408 bytes in segment CODE
372 bytes of CODE memory (+ 36 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -