⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sys.txt

📁 STM32+ov7670
💻 TXT
📖 第 1 页 / 共 2 页
字号:
00019e  4608              MOV      r0,r1
0001a0  6840              LDR      r0,[r0,#4]
0001a2  f42000fe          BIC      r0,r0,#0x7f0000
0001a6  6048              STR      r0,[r1,#4]
;;;111    	RCC->CIR = 0x00000000;     //关闭所有中断
0001a8  2000              MOVS     r0,#0
0001aa  6088              STR      r0,[r1,#8]
;;;112    	//配置向量表				  
;;;113    #ifdef  VECT_TAB_RAM
;;;114    	MY_NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
;;;115    #else   
;;;116    	MY_NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
0001ac  2100              MOVS     r1,#0
0001ae  f04f6000          MOV      r0,#0x8000000
0001b2  f7fffffe          BL       MY_NVIC_SetVectorTable
;;;117    #endif
;;;118    }
0001b6  bd00              POP      {pc}
;;;119    //THUMB指令不支持汇编内联
                          ENDP

                  Sys_Standby PROC
;;;129    //091202
;;;130    void Sys_Standby(void)
0001b8  b510              PUSH     {r4,lr}
;;;131    {
;;;132    	SCB->SCR|=1<<2;//使能SLEEPDEEP位 (SYS->CTRL)	   
0001ba  484c              LDR      r0,|L1.748|
0001bc  6800              LDR      r0,[r0,#0]
0001be  f0400004          ORR      r0,r0,#4
0001c2  f04f21e0          MOV      r1,#0xe000e000
0001c6  f8c10d10          STR      r0,[r1,#0xd10]
;;;133      	RCC->APB1ENR|=1<<28;     //使能电源时钟	    
0001ca  4840              LDR      r0,|L1.716|
0001cc  69c0              LDR      r0,[r0,#0x1c]
0001ce  f0405080          ORR      r0,r0,#0x10000000
0001d2  493e              LDR      r1,|L1.716|
0001d4  61c8              STR      r0,[r1,#0x1c]
;;;134     	PWR->CSR|=1<<8;          //设置WKUP用于唤醒
0001d6  4846              LDR      r0,|L1.752|
0001d8  6840              LDR      r0,[r0,#4]
0001da  f4407080          ORR      r0,r0,#0x100
0001de  4944              LDR      r1,|L1.752|
0001e0  6048              STR      r0,[r1,#4]
;;;135    	PWR->CR|=1<<2;           //清除Wake-up 标志
0001e2  4608              MOV      r0,r1
0001e4  6800              LDR      r0,[r0,#0]
0001e6  f0400004          ORR      r0,r0,#4
0001ea  6008              STR      r0,[r1,#0]
;;;136    	PWR->CR|=1<<1;           //PDDS置位		  
0001ec  4608              MOV      r0,r1
0001ee  6800              LDR      r0,[r0,#0]
0001f0  f0400002          ORR      r0,r0,#2
0001f4  6008              STR      r0,[r1,#0]
;;;137    	WFI_SET();				 //执行WFI指令		 
0001f6  f7fffffe          BL       WFI_SET
;;;138    }	  
0001fa  bd10              POP      {r4,pc}
;;;139    //后备寄存器写入操作
                          ENDP

                  Sys_Soft_Reset PROC
;;;185    //091209
;;;186    void Sys_Soft_Reset(void)
0001fc  482f              LDR      r0,|L1.700|
;;;187    {   
;;;188    	SCB->AIRCR =0X05FA0000|(u32)0x04;	  
0001fe  1d00              ADDS     r0,r0,#4
000200  492d              LDR      r1,|L1.696|
000202  6008              STR      r0,[r1,#0]
;;;189    } 
000204  4770              BX       lr
;;;190    
                          ENDP

                  JTAG_Set PROC
;;;194    //100818		  
;;;195    void JTAG_Set(u8 mode)
000206  4601              MOV      r1,r0
;;;196    {
;;;197    	u32 temp;
;;;198    	temp=mode;
;;;199    	temp<<=25;
000208  0649              LSLS     r1,r1,#25
;;;200    	RCC->APB2ENR|=1<<0;     //开启辅助时钟	   
00020a  4a30              LDR      r2,|L1.716|
00020c  6992              LDR      r2,[r2,#0x18]
00020e  f0420201          ORR      r2,r2,#1
000212  4b2e              LDR      r3,|L1.716|
000214  619a              STR      r2,[r3,#0x18]
;;;201    	AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
000216  4a30              LDR      r2,|L1.728|
000218  6852              LDR      r2,[r2,#4]
00021a  f02262e0          BIC      r2,r2,#0x7000000
00021e  4b2e              LDR      r3,|L1.728|
000220  605a              STR      r2,[r3,#4]
;;;202    	AFIO->MAPR|=temp;       //设置jtag模式
000222  461a              MOV      r2,r3
000224  6852              LDR      r2,[r2,#4]
000226  430a              ORRS     r2,r2,r1
000228  605a              STR      r2,[r3,#4]
;;;203    } 
00022a  4770              BX       lr
;;;204    //系统时钟初始化函数
                          ENDP

                  Stm32_Clock_Init PROC
;;;207    //091209
;;;208    void Stm32_Clock_Init(u8 PLL)
00022c  b530              PUSH     {r4,r5,lr}
;;;209    {
00022e  4604              MOV      r4,r0
;;;210    	unsigned char temp=0;   
000230  2500              MOVS     r5,#0
;;;211    	MYRCC_DeInit();		  //复位并配置向量表
000232  f7fffffe          BL       MYRCC_DeInit
;;;212    	RCC->CR|=0x00010000;  //外部高速时钟使能HSEON
000236  4825              LDR      r0,|L1.716|
000238  6800              LDR      r0,[r0,#0]
00023a  f4403080          ORR      r0,r0,#0x10000
00023e  4923              LDR      r1,|L1.716|
000240  6008              STR      r0,[r1,#0]
;;;213    	while(!(RCC->CR>>17));//等待外部时钟就绪
000242  bf00              NOP      
                  |L1.580|
000244  4821              LDR      r0,|L1.716|
000246  6800              LDR      r0,[r0,#0]
000248  0c40              LSRS     r0,r0,#17
00024a  d0fb              BEQ      |L1.580|
;;;214    	RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
00024c  f44f6080          MOV      r0,#0x400
000250  491e              LDR      r1,|L1.716|
000252  6048              STR      r0,[r1,#4]
;;;215    	PLL-=2;//抵消2个单位
000254  1ea0              SUBS     r0,r4,#2
000256  b2c4              UXTB     r4,r0
;;;216    	RCC->CFGR|=PLL<<18;   //设置PLL值 2~16
000258  4608              MOV      r0,r1
00025a  6840              LDR      r0,[r0,#4]
00025c  ea404084          ORR      r0,r0,r4,LSL #18
000260  6048              STR      r0,[r1,#4]
;;;217    	RCC->CFGR|=1<<16;	  //PLLSRC ON 
000262  4608              MOV      r0,r1
000264  6840              LDR      r0,[r0,#4]
000266  f4403080          ORR      r0,r0,#0x10000
00026a  6048              STR      r0,[r1,#4]
;;;218    	FLASH->ACR|=0x32;	  //FLASH 2个延时周期
00026c  4821              LDR      r0,|L1.756|
00026e  6800              LDR      r0,[r0,#0]
000270  f0400032          ORR      r0,r0,#0x32
000274  491f              LDR      r1,|L1.756|
000276  6008              STR      r0,[r1,#0]
;;;219    
;;;220    	RCC->CR|=0x01000000;  //PLLON
000278  4814              LDR      r0,|L1.716|
00027a  6800              LDR      r0,[r0,#0]
00027c  f0407080          ORR      r0,r0,#0x1000000
000280  4912              LDR      r1,|L1.716|
000282  6008              STR      r0,[r1,#0]
;;;221    	while(!(RCC->CR>>25));//等待PLL锁定
000284  bf00              NOP      
                  |L1.646|
000286  4811              LDR      r0,|L1.716|
000288  6800              LDR      r0,[r0,#0]
00028a  0e40              LSRS     r0,r0,#25
00028c  d0fb              BEQ      |L1.646|
;;;222    	RCC->CFGR|=0x00000002;//PLL作为系统时钟	 
00028e  480f              LDR      r0,|L1.716|
000290  6840              LDR      r0,[r0,#4]
000292  f0400002          ORR      r0,r0,#2
000296  490d              LDR      r1,|L1.716|
000298  6048              STR      r0,[r1,#4]
;;;223    	while(temp!=0x02)     //等待PLL作为系统时钟设置成功
00029a  e005              B        |L1.680|
                  |L1.668|
;;;224    	{   
;;;225    		temp=RCC->CFGR>>2;
00029c  480b              LDR      r0,|L1.716|
00029e  6840              LDR      r0,[r0,#4]
0002a0  f3c00587          UBFX     r5,r0,#2,#8
;;;226    		temp&=0x03;
0002a4  f0050503          AND      r5,r5,#3
                  |L1.680|
0002a8  2d02              CMP      r5,#2                 ;223
0002aa  d1f7              BNE      |L1.668|
;;;227    	}    
;;;228    }		    
0002ac  bd30              POP      {r4,r5,pc}
;;;229    
                          ENDP

0002ae  0000              DCW      0x0000
                  |L1.688|
                          DCD      0x1fffff80
                  |L1.692|
                          DCD      0xe000ed08
                  |L1.696|
                          DCD      0xe000ed0c
                  |L1.700|
                          DCD      0x05fa0000
                  |L1.704|
                          DCD      0xe000e100
                  |L1.708|
                          DCD      0xe000e104
                  |L1.712|
                          DCD      0xe000e400
                  |L1.716|
                          DCD      0x40021000
                  |L1.720|
                          DCD      0x40010008
                  |L1.724|
                          DCD      0x40010400
                  |L1.728|
                          DCD      0x40010000
                  |L1.732|
                          DCD      0x4001040c
                  |L1.736|
                          DCD      0x40010408
                  |L1.740|
                          DCD      0xf8ff0000
                  |L1.744|
                          DCD      0xfef6ffff
                  |L1.748|
                          DCD      0xe000ed10
                  |L1.752|
                          DCD      0x40007000
                  |L1.756|
                          DCD      0x40022000

;*** Start embedded assembler ***

#line 1 "SYSTEM\\sys\\sys.c"
	AREA ||.emb_text||, CODE, READONLY
	THUMB
	EXPORT |WFI_SET|
#line 123
|WFI_SET| PROC
#line 124

 WFI
	ENDP

;*** End   embedded assembler ***

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -