; generated by ARM C/C++ Compiler, RVCT4.0 [Build 728]
; commandline ArmCC [--debug -c --asm --interleave -o..\OBJ\main.o --depend=..\OBJ\main.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\main.crf ..\..\USER\SRC\main.c]
                          THUMB

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

                  IO_Init PROC
;;;103    
;;;104    void IO_Init(void)
000000  b510              PUSH     {r4,lr}
;;;105    {
;;;106    
;;;107      	RCC->APB2ENR|=1<<0; //ʱ
000002  485a              LDR      r0,|L1.364|
000004  6980              LDR      r0,[r0,#0x18]
000006  f0400001          ORR      r0,r0,#1
00000a  4958              LDR      r1,|L1.364|
00000c  6188              STR      r0,[r1,#0x18]
;;;108    	RCC->APB2ENR|=1<<2;//ʹPORTAʱ
00000e  4608              MOV      r0,r1
000010  6980              LDR      r0,[r0,#0x18]
000012  f0400004          ORR      r0,r0,#4
000016  6188              STR      r0,[r1,#0x18]
;;;109    	RCC->APB2ENR|=1<<3;//ʹPORTBʱ
000018  4608              MOV      r0,r1
00001a  6980              LDR      r0,[r0,#0x18]
00001c  f0400008          ORR      r0,r0,#8
000020  6188              STR      r0,[r1,#0x18]
;;;110     	RCC->APB2ENR|=1<<4;//ʹPORTCʱ
000022  4608              MOV      r0,r1
000024  6980              LDR      r0,[r0,#0x18]
000026  f0400010          ORR      r0,r0,#0x10
00002a  6188              STR      r0,[r1,#0x18]
;;;111    
;;;112       	GPIOA->CRH=0X33333333; //PORTA
00002c  f04f3033          MOV      r0,#0x33333333
000030  494f              LDR      r1,|L1.368|
000032  6008              STR      r0,[r1,#0]
;;;113    	GPIOA->CRL=0X33333333;
000034  494f              LDR      r1,|L1.372|
000036  f8c10800          STR      r0,[r1,#0x800]
;;;114    	GPIOA->ODR=0XFFFF;	 
00003a  f64f70ff          MOV      r0,#0xffff
00003e  494e              LDR      r1,|L1.376|
000040  6008              STR      r0,[r1,#0]
;;;115    
;;;116    	GPIOB->CRL=0X88888888; //PB0-7  
000042  f04f3088          MOV      r0,#0x88888888
000046  494d              LDR      r1,|L1.380|
000048  6008              STR      r0,[r1,#0]
;;;117    	GPIOB->CRH=0X33333333; //PB8-15  
00004a  f04f3033          MOV      r0,#0x33333333
00004e  f1010104          ADD      r1,r1,#4
000052  6008              STR      r0,[r1,#0]
;;;118    	GPIOA->ODR=0XFFFF;
000054  f64f70ff          MOV      r0,#0xffff
000058  4947              LDR      r1,|L1.376|
00005a  6008              STR      r0,[r1,#0]
;;;119    
;;;120       	GPIOC->CRH=0X33333333; //PORTC
00005c  f04f3033          MOV      r0,#0x33333333
000060  4947              LDR      r1,|L1.384|
000062  6048              STR      r0,[r1,#4]
;;;121    	GPIOC->CRL=0X33333333; 	
000064  6008              STR      r0,[r1,#0]
;;;122    	GPIOC->ODR=0XFFFF;	
000066  f64f70ff          MOV      r0,#0xffff
00006a  60c8              STR      r0,[r1,#0xc]
;;;123    		    
;;;124       	JTAG_Set(SWD_ENABLE);	 //JTAGֹܽSWD
00006c  f04f0001          MOV      r0,#1
000070  f7fffffe          BL       JTAG_Set
;;;125    }
000074  bd10              POP      {r4,pc}
                          ENDP

                  RCC_Configuration PROC
;;;75     *******************************************************************************/
;;;76     void RCC_Configuration(void)
000076  b510              PUSH     {r4,lr}
;;;77     { 
;;;78     
;;;79       ErrorStatus HSEStartUpStatus;
;;;80       RCC_DeInit();
000078  f7fffffe          BL       RCC_DeInit
;;;81       RCC_HSEConfig(RCC_HSE_ON);   
00007c  f44f3080          MOV      r0,#0x10000
000080  f7fffffe          BL       RCC_HSEConfig
;;;82       HSEStartUpStatus = RCC_WaitForHSEStartUp();
000084  f7fffffe          BL       RCC_WaitForHSEStartUp
000088  4604              MOV      r4,r0
;;;83     
;;;84       if(HSEStartUpStatus == SUCCESS)	  
00008a  2c01              CMP      r4,#1
00008c  d11e              BNE      |L1.204|
;;;85       {
;;;86       
;;;87         RCC_HCLKConfig(RCC_SYSCLK_Div1);  
00008e  2000              MOVS     r0,#0
000090  f7fffffe          BL       RCC_HCLKConfig
;;;88         RCC_PCLK2Config(RCC_HCLK_Div1);		   
000094  2000              MOVS     r0,#0
000096  f7fffffe          BL       RCC_PCLK2Config
;;;89     	RCC_PCLK1Config(RCC_HCLK_Div2);	 	  
00009a  02a0              LSLS     r0,r4,#10
00009c  f7fffffe          BL       RCC_PCLK1Config
;;;90         RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);	
0000a0  f44f11e0          MOV      r1,#0x1c0000
0000a4  0420              LSLS     r0,r4,#16
0000a6  f7fffffe          BL       RCC_PLLConfig
;;;91         RCC_PLLCmd(ENABLE); 
0000aa  2001              MOVS     r0,#1
0000ac  f7fffffe          BL       RCC_PLLCmd
;;;92         while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)	  
0000b0  bf00              NOP      
                  |L1.178|
0000b2  2039              MOVS     r0,#0x39
0000b4  f7fffffe          BL       RCC_GetFlagStatus
0000b8  2800              CMP      r0,#0
0000ba  d0fa              BEQ      |L1.178|
;;;93            {
;;;94            }
;;;95         RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 
0000bc  2002              MOVS     r0,#2
0000be  f7fffffe          BL       RCC_SYSCLKConfig
;;;96         while(RCC_GetSYSCLKSource() != 0x08)	  
0000c2  bf00              NOP      
                  |L1.196|
0000c4  f7fffffe          BL       RCC_GetSYSCLKSource
0000c8  2808              CMP      r0,#8
0000ca  d1fb              BNE      |L1.196|
                  |L1.204|
;;;97            { 
;;;98            }
;;;99          }
;;;100    
;;;101        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE); 
0000cc  2101              MOVS     r1,#1
0000ce  2005              MOVS     r0,#5
0000d0  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;102    }
0000d4  bd10              POP      {r4,pc}
;;;103    
                          ENDP

                  main PROC
;;;38     
;;;39     main()
0000d6  b51c              PUSH     {r2-r4,lr}
;;;40     { 
;;;41     	RCC_Configuration();;//ϵͳʱ
0000d8  f7fffffe          BL       RCC_Configuration
;;;42     	delay_init(72);		//ʱʼ
0000dc  2048              MOVS     r0,#0x48
0000de  f7fffffe          BL       delay_init
;;;43     	USART1_Init(115200);//1ʼ  
0000e2  f44f30e1          MOV      r0,#0x1c200
0000e6  f7fffffe          BL       USART1_Init
;;;44      	printf("QF: You are welcome!\r\n");	 
0000ea  a026              ADR      r0,|L1.388|
0000ec  f7fffffe          BL       __2printf
;;;45     
;;;46     
;;;47     	IO_Init(); 
0000f0  f7fffffe          BL       IO_Init
;;;48     	LCD_Init();
0000f4  f7fffffe          BL       LCD_Init
;;;49     	LCD_Clear(BLUE);       // 
0000f8  201f              MOVS     r0,#0x1f
0000fa  f7fffffe          BL       LCD_Clear
;;;50     	POINT_COLOR=YELLOW;
0000fe  f64f70e0          MOV      r0,#0xffe0
000102  4926              LDR      r1,|L1.412|
000104  8008              STRH     r0,[r1,#0]
;;;51     	BACK_COLOR=BLUE;
000106  201f              MOVS     r0,#0x1f
000108  4925              LDR      r1,|L1.416|
00010a  8008              STRH     r0,[r1,#0]
;;;52        	LCD_ShowString(20,50,"QF Welcome!");
00010c  a225              ADR      r2,|L1.420|
00010e  2132              MOVS     r1,#0x32
000110  2014              MOVS     r0,#0x14
000112  f7fffffe          BL       LCD_ShowString
;;;53     	LCD_ShowString(20,100,"STM32 Camera");
000116  a226              ADR      r2,|L1.432|
000118  2164              MOVS     r1,#0x64
00011a  2014              MOVS     r0,#0x14
00011c  f7fffffe          BL       LCD_ShowString
;;;54     	LCD_ShowString(20,150,"OV7670 Initing......");
000120  a227              ADR      r2,|L1.448|
000122  2196              MOVS     r1,#0x96
000124  2014              MOVS     r0,#0x14
000126  f7fffffe          BL       LCD_ShowString
;;;55     	CMOS1_PWDN=0;
00012a  2000              MOVS     r0,#0
00012c  492a              LDR      r1,|L1.472|
00012e  6008              STR      r0,[r1,#0]
;;;56     	CMOS1_RST=0;
000130  492a              LDR      r1,|L1.476|
000132  f8c1018c          STR      r0,[r1,#0x18c]
;;;57     	delay_ms(20);
000136  f04f0014          MOV      r0,#0x14
00013a  f7fffffe          BL       delay_ms
;;;58     	CMOS1_RST=1;
00013e  2001              MOVS     r0,#1
000140  4927              LDR      r1,|L1.480|
000142  6008              STR      r0,[r1,#0]
;;;59     	InitI2C0();	 
000144  f7fffffe          BL       InitI2C0
;;;60     	while(1!=Cmos7670_init());   //CMOSʼ	
000148  bf00              NOP      
                  |L1.330|
00014a  f7fffffe          BL       Cmos7670_init
00014e  2801              CMP      r0,#1
000150  d1fb              BNE      |L1.330|
;;;61     	Exit_Init(GPIOC, GPIO_Pin_4, GPIO_Mode_IPU, EXTI_Trigger_Falling, 2, 5);	//VSYNC	 	
000152  2305              MOVS     r3,#5
000154  2202              MOVS     r2,#2
000156  e9cd2300          STRD     r2,r3,[sp,#0]
00015a  230c              MOVS     r3,#0xc
00015c  2248              MOVS     r2,#0x48
00015e  2110              MOVS     r1,#0x10
000160  4807              LDR      r0,|L1.384|
000162  f7fffffe          BL       Exit_Init
;;;62     
;;;63       	while(1) 
000166  bf00              NOP      
                  |L1.360|
000168  e7fe              B        |L1.360|
;;;64     	{		  	
;;;65     	  
;;;66     	}
;;;67     }
;;;68     
                          ENDP

00016a  0000              DCW      0x0000
                  |L1.364|
                          DCD      0x40021000
                  |L1.368|
                          DCD      0x40010804
                  |L1.372|
                          DCD      0x40010000
                  |L1.376|
                          DCD      0x4001080c
                  |L1.380|
                          DCD      0x40010c00
                  |L1.384|
                          DCD      0x40011000
                  |L1.388|
000184  51463a20          DCB      "QF: You are welcome!\r\n",0
000188  596f7520
00018c  61726520
000190  77656c63
000194  6f6d6521
000198  0d0a00  
00019b  00                DCB      0
                  |L1.412|
                          DCD      POINT_COLOR
                  |L1.416|
                          DCD      BACK_COLOR
                  |L1.420|
0001a4  51462057          DCB      "QF Welcome!",0
0001a8  656c636f
0001ac  6d652100
                  |L1.432|
0001b0  53544d33          DCB      "STM32 Camera",0
0001b4  32204361
0001b8  6d657261
0001bc  00      
0001bd  00                DCB      0
0001be  00                DCB      0
0001bf  00                DCB      0
                  |L1.448|
0001c0  4f563736          DCB      "OV7670 Initing......",0
0001c4  37302049
0001c8  6e697469
0001cc  6e672e2e
0001d0  2e2e2e2e
0001d4  00      
0001d5  00                DCB      0
0001d6  00                DCB      0
0001d7  00                DCB      0
                  |L1.472|
                          DCD      0x42218190
                  |L1.476|
                          DCD      0x42218000
                  |L1.480|
                          DCD      0x4221818c

                  __ARM_use_no_argv EQU 0
