; generated by ARM C/C++ Compiler, 5.03 [Build 24]
; commandline ArmCC [--list --debug -c --asm --interleave -o..\OBJ\delay.o --asm_dir=..\LIST\ --list_dir=..\LIST\ --depend=..\OBJ\delay.d --cpu=Cortex-M3 --apcs=interwork -O0 -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\Libraries\CMSIS\CM3\CoreSupport -I..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x -I..\..\USER\INC -IC:\Keil\ARM\RV31\INC -IC:\Keil\ARM\CMSIS\Include -IC:\Keil\ARM\Inc\ST\STM32F10x -D__MICROLIB -DUSE_STDPERIPH_DRIVER -DSTM32F10X_HD --omf_browse=..\OBJ\delay.crf ..\..\USER\SRC\delay.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  delay_init PROC
;;;32     //SYSCLK:ϵͳʱ
;;;33     void delay_init(u8 SYSCLK)
000000  f04f21e0          MOV      r1,#0xe000e000
;;;34     {
;;;35     	SysTick->CTRL&=0xfffffffb;//bit2,ѡⲿʱ  HCLK/8
000004  6909              LDR      r1,[r1,#0x10]
000006  f0210104          BIC      r1,r1,#4
00000a  f04f22e0          MOV      r2,#0xe000e000
00000e  6111              STR      r1,[r2,#0x10]
;;;36     	fac_us=SYSCLK/8;		    
000010  17c2              ASRS     r2,r0,#31
000012  eb007252          ADD      r2,r0,r2,LSR #29
000016  10d2              ASRS     r2,r2,#3
000018  4b22              LDR      r3,|L1.164|
00001a  701a              STRB     r2,[r3,#0]
;;;37     	fac_ms=(u16)fac_us*1000;
00001c  4619              MOV      r1,r3
00001e  7809              LDRB     r1,[r1,#0]  ; fac_us
000020  eb010241          ADD      r2,r1,r1,LSL #1
000024  ebc211c1          RSB      r1,r2,r1,LSL #7
000028  f64f72ff          MOV      r2,#0xffff
00002c  ea0201c1          AND      r1,r2,r1,LSL #3
000030  4a1d              LDR      r2,|L1.168|
000032  8011              STRH     r1,[r2,#0]
;;;38     }								    
000034  4770              BX       lr
;;;39     //ʱnms
                          ENDP

                  delay_ms PROC
;;;44     //72M,nms<=1864 
;;;45     void delay_ms(u16 nms)
000036  4601              MOV      r1,r0
;;;46     {	 		  	  
;;;47     	u32 temp;		   
;;;48     	SysTick->LOAD=(u32)nms*fac_ms;//ʱ(SysTick->LOADΪ24bit)
000038  4a1b              LDR      r2,|L1.168|
00003a  8812              LDRH     r2,[r2,#0]  ; fac_ms
00003c  434a              MULS     r2,r1,r2
00003e  f04f23e0          MOV      r3,#0xe000e000
000042  615a              STR      r2,[r3,#0x14]
;;;49     	SysTick->VAL =0x00;           //ռ
000044  2200              MOVS     r2,#0
000046  619a              STR      r2,[r3,#0x18]
;;;50     	SysTick->CTRL=0x01 ;          //ʼ  
000048  2201              MOVS     r2,#1
00004a  611a              STR      r2,[r3,#0x10]
;;;51     	do
00004c  bf00              NOP      
                  |L1.78|
;;;52     	{
;;;53     		temp=SysTick->CTRL;
00004e  f04f22e0          MOV      r2,#0xe000e000
000052  6910              LDR      r0,[r2,#0x10]
;;;54     	}
;;;55     	while(temp&0x01&&!(temp&(1<<16)));//ȴʱ䵽   
000054  f0100f01          TST      r0,#1
000058  d002              BEQ      |L1.96|
00005a  f4103f80          TST      r0,#0x10000
00005e  d0f6              BEQ      |L1.78|
                  |L1.96|
;;;56     	SysTick->CTRL=0x00;       //رռ
000060  2200              MOVS     r2,#0
000062  f04f23e0          MOV      r3,#0xe000e000
000066  611a              STR      r2,[r3,#0x10]
;;;57     	SysTick->VAL =0X00;       //ռ	  	    
000068  619a              STR      r2,[r3,#0x18]
;;;58     }   
00006a  4770              BX       lr
;;;59     //ʱnus
                          ENDP

                  delay_us PROC
;;;60     //nusΪҪʱus.		    								   
;;;61     void delay_us(u32 nus)
00006c  4601              MOV      r1,r0
;;;62     {		
;;;63     	u32 temp;	    	 
;;;64     	SysTick->LOAD=nus*fac_us; //ʱ	  		 
00006e  4a0d              LDR      r2,|L1.164|
000070  7812              LDRB     r2,[r2,#0]  ; fac_us
000072  434a              MULS     r2,r1,r2
000074  f04f23e0          MOV      r3,#0xe000e000
000078  615a              STR      r2,[r3,#0x14]
;;;65     	SysTick->VAL=0x00;        //ռ
00007a  2200              MOVS     r2,#0
00007c  619a              STR      r2,[r3,#0x18]
;;;66     	SysTick->CTRL=0x01 ;      //ʼ 	 
00007e  2201              MOVS     r2,#1
000080  611a              STR      r2,[r3,#0x10]
;;;67     	do
000082  bf00              NOP      
                  |L1.132|
;;;68     	{
;;;69     		temp=SysTick->CTRL;
000084  f04f22e0          MOV      r2,#0xe000e000
000088  6910              LDR      r0,[r2,#0x10]
;;;70     	}
;;;71     	while(temp&0x01&&!(temp&(1<<16)));//ȴʱ䵽   
00008a  f0100f01          TST      r0,#1
00008e  d002              BEQ      |L1.150|
000090  f4103f80          TST      r0,#0x10000
000094  d0f6              BEQ      |L1.132|
                  |L1.150|
;;;72     	SysTick->CTRL=0x00;       //رռ
000096  2200              MOVS     r2,#0
000098  f04f23e0          MOV      r3,#0xe000e000
00009c  611a              STR      r2,[r3,#0x10]
;;;73     	SysTick->VAL =0X00;       //ռ	 
00009e  619a              STR      r2,[r3,#0x18]
;;;74     }
0000a0  4770              BX       lr
;;;75     
                          ENDP

0000a2  0000              DCW      0x0000
                  |L1.164|
                          DCD      fac_us
                  |L1.168|
                          DCD      fac_ms

                          AREA ||.data||, DATA, ALIGN=1

                  fac_us
000000  0000              DCB      0x00,0x00
                  fac_ms
000002  0000              DCW      0x0000
