; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\obj\timer.o --depend=.\obj\timer.d --device=DARMSTM --apcs=interwork -O0 -I.\FWlib\inc -I.\user -I.\CM3 -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD --omf_browse=.\obj\timer.crf user\timer.c]
                          THUMB

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

                  timer3_ini PROC
;;;20     ****************************************************************************/ 
;;;21     void timer3_ini(void)
000000  b50e              PUSH     {r1-r3,lr}
;;;22     {
;;;23        
;;;24        //ʱΪ˲50KĸƵʣ ڳĿ
;;;25        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
;;;26        //TIM3ʱ
;;;27        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
000002  2101              MOVS     r1,#1
000004  2002              MOVS     r0,#2
000006  f7fffffe          BL       RCC_APB1PeriphClockCmd
;;;28        //½TimerΪȱʡֵ
;;;29        TIM_DeInit(TIM3);
00000a  4836              LDR      r0,|L1.228|
00000c  f7fffffe          BL       TIM_DeInit
;;;30        //ڲʱӸTIM3ṩʱԴ
;;;31        TIM_InternalClockConfig(TIM3);
000010  4834              LDR      r0,|L1.228|
000012  f7fffffe          BL       TIM_InternalClockConfig
;;;32        //ԤƵϵΪ36000-1ʱΪ72MHz/1440 = 50KHz   
;;;33        TIM_TimeBaseStructure.TIM_Prescaler = 1440 - 1;
000016  f240509f          MOV      r0,#0x59f
00001a  f8ad0000          STRH     r0,[sp,#0]
;;;34        //ʱӷָ
;;;35        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
00001e  2000              MOVS     r0,#0
000020  f8ad0006          STRH     r0,[sp,#6]
;;;36        //üģʽΪϼģʽ
;;;37        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
000024  f8ad0002          STRH     r0,[sp,#2]
;;;38        //üСÿ2Ͳһ¼
;;;39        TIM_TimeBaseStructure.TIM_Period = 2-1;
000028  2001              MOVS     r0,#1
00002a  f8ad0004          STRH     r0,[sp,#4]
;;;40        //ӦõTIM3
;;;41        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
00002e  4669              MOV      r1,sp
000030  482c              LDR      r0,|L1.228|
000032  f7fffffe          BL       TIM_TimeBaseInit
;;;42        //жϱ־
;;;43        TIM_ClearFlag(TIM3, TIM_FLAG_Update);
000036  2101              MOVS     r1,#1
000038  482a              LDR      r0,|L1.228|
00003a  f7fffffe          BL       TIM_ClearFlag
;;;44        //ֹARRԤװػ
;;;45        TIM_ARRPreloadConfig(TIM3, DISABLE);
00003e  2100              MOVS     r1,#0
000040  4828              LDR      r0,|L1.228|
000042  f7fffffe          BL       TIM_ARRPreloadConfig
;;;46        //TIM3ж
;;;47        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
000046  2201              MOVS     r2,#1
000048  4611              MOV      r1,r2
00004a  4826              LDR      r0,|L1.228|
00004c  f7fffffe          BL       TIM_ITConfig
;;;48        TIM_Cmd(TIM3,ENABLE);   	   
000050  2101              MOVS     r1,#1
000052  4824              LDR      r0,|L1.228|
000054  f7fffffe          BL       TIM_Cmd
;;;49     }
000058  bd0e              POP      {r1-r3,pc}
;;;50     
                          ENDP

                  timer2_ini PROC
;;;58     ****************************************************************************/ 
;;;59     void timer2_ini(void)
00005a  b508              PUSH     {r3,lr}
;;;60     {
;;;61        GPIO_InitTypeDef GPIO_InitStructure;	   
;;;62        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
;;;63        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
00005c  2101              MOVS     r1,#1
00005e  4608              MOV      r0,r1
000060  f7fffffe          BL       RCC_APB1PeriphClockCmd
;;;64        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 |GPIO_Pin_11;						//PB11ΪTIM2ͨ4
000064  f44f6040          MOV      r0,#0xc00
000068  f8ad0000          STRH     r0,[sp,#0]
;;;65        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
00006c  2018              MOVS     r0,#0x18
00006e  f88d0003          STRB     r0,[sp,#3]
;;;66        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000072  2003              MOVS     r0,#3
000074  f88d0002          STRB     r0,[sp,#2]
;;;67        GPIO_Init(GPIOB, &GPIO_InitStructure);
000078  4669              MOV      r1,sp
00007a  481b              LDR      r0,|L1.232|
00007c  f7fffffe          BL       GPIO_Init
;;;68       /*TIM2ֲùܿ	 TIM3ľֲÿʱPB11ᱻΪTIM2_CH4*/
;;;69        GPIO_PinRemapConfig(GPIO_FullRemap_TIM2 , ENABLE);			 
000080  2101              MOVS     r1,#1
000082  481a              LDR      r0,|L1.236|
000084  f7fffffe          BL       GPIO_PinRemapConfig
;;;70       				
;;;71     
;;;72     
;;;73        /*-------------------------------------------------------------------
;;;74       TIM2CLK=72MHz  ԤƵϵPrescaler=2 Ƶ ʱʱΪ24MHz
;;;75       ݹʽ ͨռձ=TIM2_CCR2/(TIM_Period+1),ԵõTIM_Pulseļֵ	 
;;;76       /ȽϼĴ2 TIM2_CCR2= CCR2_Val 	     
;;;77       -------------------------------------------------------------------*/
;;;78       TIM2_TimeBaseStructure.TIM_Prescaler = 2;						    //ԤƵTIM2_PSC=3	 
000088  2002              MOVS     r0,#2
00008a  4919              LDR      r1,|L1.240|
00008c  8008              STRH     r0,[r1,#0]
;;;79       TIM2_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;		//ϼģʽ TIM2_CR1[4]=0
00008e  2000              MOVS     r0,#0
000090  8048              STRH     r0,[r1,#2]
;;;80       TIM2_TimeBaseStructure.TIM_Period =24000;				            //ԶװؼĴTIM2_APR  ȷƵΪ1KHz 		     
000092  f64550c0          MOV      r0,#0x5dc0
000096  8088              STRH     r0,[r1,#4]
;;;81       TIM2_TimeBaseStructure.TIM_ClockDivision = 0x0;					//ʱӷƵ TIM2_CR1[9:8]=00
000098  2000              MOVS     r0,#0
00009a  80c8              STRH     r0,[r1,#6]
;;;82       TIM2_TimeBaseStructure.TIM_RepetitionCounter = 0x0;
00009c  7208              STRB     r0,[r1,#8]
;;;83     
;;;84       TIM_TimeBaseInit(TIM2,&TIM2_TimeBaseStructure);					//дTIM2Ĵ
00009e  f04f4080          MOV      r0,#0x40000000
0000a2  f7fffffe          BL       TIM_TimeBaseInit
;;;85       
;;;86       TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; 			    //PWMģʽ2 TIM2_CCMR1[14:12]=111 ϼʱ
0000a6  2070              MOVS     r0,#0x70
0000a8  4912              LDR      r1,|L1.244|
0000aa  8008              STRH     r0,[r1,#0]
;;;87       																    //һTIMx_CNT<TIMx_CCR1ʱͨ1ΪЧƽΪЧƽ
;;;88       TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;    ///2  OC2źӦPB5
0000ac  2001              MOVS     r0,#1
0000ae  8048              STRH     r0,[r1,#2]
;;;89       TIM2_OCInitStructure.TIM_Pulse = 0; 					            //ȷռձȣֵЧƽʱ䡣
0000b0  2000              MOVS     r0,#0
0000b2  80c8              STRH     r0,[r1,#6]
;;;90       TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 	    //  ͵ƽЧ TIM2_CCER[5]=1;
0000b4  2002              MOVS     r0,#2
0000b6  8108              STRH     r0,[r1,#8]
;;;91              
;;;92       TIM_OC4Init(TIM2, &TIM2_OCInitStructure);
0000b8  0740              LSLS     r0,r0,#29
0000ba  f7fffffe          BL       TIM_OC4Init
;;;93       TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);
0000be  2108              MOVS     r1,#8
0000c0  06c8              LSLS     r0,r1,#27
0000c2  f7fffffe          BL       TIM_OC4PreloadConfig
;;;94     
;;;95       TIM_OC3Init(TIM2, &TIM2_OCInitStructure);
0000c6  490b              LDR      r1,|L1.244|
0000c8  f04f4080          MOV      r0,#0x40000000
0000cc  f7fffffe          BL       TIM_OC3Init
;;;96       TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);
0000d0  2108              MOVS     r1,#8
0000d2  06c8              LSLS     r0,r1,#27
0000d4  f7fffffe          BL       TIM_OC3PreloadConfig
;;;97     
;;;98       TIM_Cmd(TIM2,ENABLE);	
0000d8  2101              MOVS     r1,#1
0000da  0788              LSLS     r0,r1,#30
0000dc  f7fffffe          BL       TIM_Cmd
;;;99     }
0000e0  bd08              POP      {r3,pc}
;;;100    
                          ENDP

0000e2  0000              DCW      0x0000
                  |L1.228|
                          DCD      0x40000400
                  |L1.232|
                          DCD      0x40010c00
                  |L1.236|
                          DCD      0x00180300
                  |L1.240|
                          DCD      TIM2_TimeBaseStructure
                  |L1.244|
                          DCD      TIM2_OCInitStructure

                          AREA ||.bss||, DATA, NOINIT, ALIGN=1

                  TIM_TimeBaseStructure
                          %        10
                  TIM2_TimeBaseStructure
                          %        10
                  TIM2_BDTRInitStructure
                          %        14
