; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637]
; 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 --diag_suppress=9931 -I.\FWlib\inc -I.\user -I.\CM3 -I.\dmp -I.\RTE\_STM32-FD -If:\Users\Administrator\AppData\Local\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -If:\Users\Administrator\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.4.1\Device\Include -D__MICROLIB -D__UVISION_VERSION=530 -D_RTE_ -DSTM32F10X_MD -D_RTE_ -DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD --omf_browse=.\obj\delay.crf user\delay.c]
                          THUMB

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

                  delay_init PROC
;;;9      //SYSCLK:ϵͳʱ
;;;10     void delay_init()
000000  b510              PUSH     {r4,lr}
;;;11     {
;;;12     
;;;13     	SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);	//ѡⲿʱ  HCLK/8
000002  f06f0004          MVN      r0,#4
000006  f7fffffe          BL       SysTick_CLKSourceConfig
;;;14     	us_fac=SystemCoreClock/8000000;				//Ϊϵͳʱӵ1/8  
00000a  482e              LDR      r0,|L1.196|
00000c  6800              LDR      r0,[r0,#0]  ; SystemCoreClock
00000e  492e              LDR      r1,|L1.200|
000010  fbb0f0f1          UDIV     r0,r0,r1
000014  492d              LDR      r1,|L1.204|
000016  7008              STRB     r0,[r1,#0]
;;;15     	ms_fac=(unsigned short int)us_fac*1000;					//1ms=1000us
000018  4608              MOV      r0,r1
00001a  7800              LDRB     r0,[r0,#0]  ; us_fac
00001c  eb000140          ADD      r1,r0,r0,LSL #1
000020  ebc110c0          RSB      r0,r1,r0,LSL #7
000024  f64f71ff          MOV      r1,#0xffff
000028  ea0100c0          AND      r0,r1,r0,LSL #3
00002c  4928              LDR      r1,|L1.208|
00002e  8008              STRH     r0,[r1,#0]
;;;16     
;;;17     }								    
000030  bd10              POP      {r4,pc}
;;;18     
                          ENDP

                  delay_us PROC
;;;21     //usΪҪʱus.		    								   
;;;22     void delay_us(unsigned int us)
000032  4601              MOV      r1,r0
;;;23     {		
;;;24     	unsigned int tmp;	    	 
;;;25     	SysTick->LOAD=us*us_fac; 					        //ʱʱ	  		 
000034  4a25              LDR      r2,|L1.204|
000036  7812              LDRB     r2,[r2,#0]  ; us_fac
000038  434a              MULS     r2,r1,r2
00003a  f04f23e0          MOV      r3,#0xe000e000
00003e  615a              STR      r2,[r3,#0x14]
;;;26     	SysTick->VAL=0x00;        					      //δ	
000040  2200              MOVS     r2,#0
000042  619a              STR      r2,[r3,#0x18]
;;;27     	SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;	//ʼʱ  
000044  461a              MOV      r2,r3
000046  6912              LDR      r2,[r2,#0x10]
000048  f0420201          ORR      r2,r2,#1
00004c  611a              STR      r2,[r3,#0x10]
;;;28     	do
00004e  bf00              NOP      
                  |L1.80|
;;;29     	{
;;;30     		tmp=SysTick->CTRL;
000050  f04f22e0          MOV      r2,#0xe000e000
000054  6910              LDR      r0,[r2,#0x10]
;;;31     	}while((tmp&0x01)&&!(tmp&(1<<16)));		    //ȴʱ䵽   
000056  f0000201          AND      r2,r0,#1
00005a  b11a              CBZ      r2,|L1.100|
00005c  f4003280          AND      r2,r0,#0x10000
000060  2a00              CMP      r2,#0
000062  d0f5              BEQ      |L1.80|
                  |L1.100|
;;;32     	SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;	//δر
000064  f04f22e0          MOV      r2,#0xe000e000
000068  6912              LDR      r2,[r2,#0x10]
00006a  f0220201          BIC      r2,r2,#1
00006e  f04f23e0          MOV      r3,#0xe000e000
000072  611a              STR      r2,[r3,#0x10]
;;;33     	SysTick->VAL =0X00;      					        //δ
000074  2200              MOVS     r2,#0
000076  619a              STR      r2,[r3,#0x18]
;;;34     }
000078  4770              BX       lr
;;;35     
                          ENDP

                  delay_ms PROC
;;;39     //72Mϵͳʱ,ms<=1864 
;;;40     void delay_ms(unsigned short int ms)
00007a  4601              MOV      r1,r0
;;;41     {	 		  	  
;;;42     	unsigned int tmp;		   
;;;43     	SysTick->LOAD=(unsigned int)ms*ms_fac;			//ʱ
00007c  4a14              LDR      r2,|L1.208|
00007e  8812              LDRH     r2,[r2,#0]  ; ms_fac
000080  434a              MULS     r2,r1,r2
000082  f04f23e0          MOV      r3,#0xe000e000
000086  615a              STR      r2,[r3,#0x14]
;;;44     	SysTick->VAL =0x00;							            //δ
000088  2200              MOVS     r2,#0
00008a  619a              STR      r2,[r3,#0x18]
;;;45     	SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;	  //ʼʱ  
00008c  461a              MOV      r2,r3
00008e  6912              LDR      r2,[r2,#0x10]
000090  f0420201          ORR      r2,r2,#1
000094  611a              STR      r2,[r3,#0x10]
;;;46     	do
000096  bf00              NOP      
                  |L1.152|
;;;47     	{
;;;48     		tmp=SysTick->CTRL;
000098  f04f22e0          MOV      r2,#0xe000e000
00009c  6910              LDR      r0,[r2,#0x10]
;;;49     	}while((tmp&0x01)&&!(tmp&(1<<16)));		    //ȴʱ䵽   
00009e  f0000201          AND      r2,r0,#1
0000a2  b11a              CBZ      r2,|L1.172|
0000a4  f4003280          AND      r2,r0,#0x10000
0000a8  2a00              CMP      r2,#0
0000aa  d0f5              BEQ      |L1.152|
                  |L1.172|
;;;50     	SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;	  //δر
0000ac  f04f22e0          MOV      r2,#0xe000e000
0000b0  6912              LDR      r2,[r2,#0x10]
0000b2  f0220201          BIC      r2,r2,#1
0000b6  f04f23e0          MOV      r3,#0xe000e000
0000ba  611a              STR      r2,[r3,#0x10]
;;;51     	SysTick->VAL =0X00;       					        //δ 
0000bc  2200              MOVS     r2,#0
0000be  619a              STR      r2,[r3,#0x18]
;;;52     } 
0000c0  4770              BX       lr
;;;53     
                          ENDP

0000c2  0000              DCW      0x0000
                  |L1.196|
                          DCD      SystemCoreClock
                  |L1.200|
                          DCD      0x007a1200
                  |L1.204|
                          DCD      us_fac
                  |L1.208|
                          DCD      ms_fac

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

                  us_fac
000000  0000              DCB      0x00,0x00
                  ms_fac
000002  0000              DCW      0x0000
