; generated by ARM C/C++ Compiler, RVCT4.0 [Build 728]
; commandline ArmCC [--debug -c --asm --interleave -o..\OBJ\delay.o --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\INC -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  4601              MOV      r1,r0
000012  17c2              ASRS     r2,r0,#31
000014  eb007252          ADD      r2,r0,r2,LSR #29
000018  10d2              ASRS     r2,r2,#3
00001a  4b1f              LDR      r3,|L1.152|
00001c  701a              STRB     r2,[r3,#0]
;;;37     	fac_ms=(u16)fac_us*1000;
00001e  4619              MOV      r1,r3
000020  7809              LDRB     r1,[r1,#0]  ; fac_us
000022  f44f727a          MOV      r2,#0x3e8
000026  4351              MULS     r1,r2,r1
000028  1c9a              ADDS     r2,r3,#2
00002a  8011              STRH     r1,[r2,#0]
;;;38     }								    
00002c  4770              BX       lr
;;;39     //ʱnms
                          ENDP

                  delay_ms PROC
;;;44     //72M,nms<=1864 
;;;45     void delay_ms(u16 nms)
00002e  4a1a              LDR      r2,|L1.152|
;;;46     {	 		  	  
;;;47     	u32 temp;		   
;;;48     	SysTick->LOAD=(u32)nms*fac_ms;//ʱ(SysTick->LOADΪ24bit)
000030  1c92              ADDS     r2,r2,#2
000032  8812              LDRH     r2,[r2,#0]  ; fac_ms
000034  4342              MULS     r2,r0,r2
000036  f04f23e0          MOV      r3,#0xe000e000
00003a  615a              STR      r2,[r3,#0x14]
;;;49     	SysTick->VAL =0x00;           //ռ
00003c  2200              MOVS     r2,#0
00003e  619a              STR      r2,[r3,#0x18]
;;;50     	SysTick->CTRL=0x01 ;          //ʼ  
000040  2201              MOVS     r2,#1
000042  611a              STR      r2,[r3,#0x10]
;;;51     	do
000044  bf00              NOP      
                  |L1.70|
;;;52     	{
;;;53     		temp=SysTick->CTRL;
000046  f04f22e0          MOV      r2,#0xe000e000
00004a  6911              LDR      r1,[r2,#0x10]
;;;54     	}
;;;55     	while(temp&0x01&&!(temp&(1<<16)));//ȴʱ䵽   
00004c  f0110f01          TST      r1,#1
000050  d002              BEQ      |L1.88|
000052  f4113f80          TST      r1,#0x10000
000056  d0f6              BEQ      |L1.70|
                  |L1.88|
;;;56     	SysTick->CTRL=0x00;       //رռ
000058  2200              MOVS     r2,#0
00005a  f04f23e0          MOV      r3,#0xe000e000
00005e  611a              STR      r2,[r3,#0x10]
;;;57     	SysTick->VAL =0X00;       //ռ	  	    
000060  619a              STR      r2,[r3,#0x18]
;;;58     }   
000062  4770              BX       lr
;;;59     //ʱnus
                          ENDP

                  delay_us PROC
;;;60     //nusΪҪʱus.		    								   
;;;61     void delay_us(u32 nus)
000064  4a0c              LDR      r2,|L1.152|
;;;62     {		
;;;63     	u32 temp;	    	 
;;;64     	SysTick->LOAD=nus*fac_us; //ʱ	  		 
000066  7812              LDRB     r2,[r2,#0]  ; fac_us
000068  4342              MULS     r2,r0,r2
00006a  f04f23e0          MOV      r3,#0xe000e000
00006e  615a              STR      r2,[r3,#0x14]
;;;65     	SysTick->VAL=0x00;        //ռ
000070  2200              MOVS     r2,#0
000072  619a              STR      r2,[r3,#0x18]
;;;66     	SysTick->CTRL=0x01 ;      //ʼ 	 
000074  2201              MOVS     r2,#1
000076  611a              STR      r2,[r3,#0x10]
;;;67     	do
000078  bf00              NOP      
                  |L1.122|
;;;68     	{
;;;69     		temp=SysTick->CTRL;
00007a  f04f22e0          MOV      r2,#0xe000e000
00007e  6911              LDR      r1,[r2,#0x10]
;;;70     	}
;;;71     	while(temp&0x01&&!(temp&(1<<16)));//ȴʱ䵽   
000080  f0110f01          TST      r1,#1
000084  d002              BEQ      |L1.140|
000086  f4113f80          TST      r1,#0x10000
00008a  d0f6              BEQ      |L1.122|
                  |L1.140|
;;;72     	SysTick->CTRL=0x00;       //رռ
00008c  2200              MOVS     r2,#0
00008e  f04f23e0          MOV      r3,#0xe000e000
000092  611a              STR      r2,[r3,#0x10]
;;;73     	SysTick->VAL =0X00;       //ռ	 
000094  619a              STR      r2,[r3,#0x18]
;;;74     }
000096  4770              BX       lr
;;;75     
                          ENDP

                  |L1.152|
                          DCD      ||.data||

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

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