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

📄 timer.txt

📁 STM32+ov7670
💻 TXT
字号:
; generated by ARM C/C++ Compiler, 4.1 [Build 481]
; commandline ArmCC [--debug -c --asm --interleave -o.\OBJ\timer.o --depend=.\OBJ\timer.d --cpu=Cortex-M3 --apcs=interwork -O0 -I..\Demo -I.\HARDWARE\EXTI -I.\HARDWARE\KEY -I.\HARDWARE\LCD -I.\HARDWARE\LED -I.\HARDWARE\TIMER -I.\HARDWARE\WDG -I.\SYSTEM\delay -I.\SYSTEM\sys -I.\SYSTEM\usart -I.\USER -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\OBJ\timer.crf HARDWARE\TIMER\timer.c]
                          THUMB

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

                  TIM3_IRQHandler PROC
;;;8      //2ms中断1次
;;;9      void TIM3_IRQHandler(void)
000000  484c              LDR      r0,|L1.308|
;;;10     { 		    		  			    
;;;11     	if(TIM3->SR&0X0001)//溢出中断
000002  8800              LDRH     r0,[r0,#0]
000004  f0100f01          TST      r0,#1
000008  d007              BEQ      |L1.26|
;;;12     	{
;;;13     		LED1=!LED1;			    				   				     	    	
00000a  484b              LDR      r0,|L1.312|
00000c  6800              LDR      r0,[r0,#0]
00000e  b908              CBNZ     r0,|L1.20|
000010  2001              MOVS     r0,#1
000012  e000              B        |L1.22|
                  |L1.20|
000014  2000              MOVS     r0,#0
                  |L1.22|
000016  4948              LDR      r1,|L1.312|
000018  6008              STR      r0,[r1,#0]
                  |L1.26|
;;;14     	}				   
;;;15     	TIM3->SR&=~(1<<0);//清除中断标志位 	    
00001a  4846              LDR      r0,|L1.308|
00001c  8800              LDRH     r0,[r0,#0]
00001e  f0200001          BIC      r0,r0,#1
000022  f04f4180          MOV      r1,#0x40000000
000026  f8a10410          STRH     r0,[r1,#0x410]
;;;16     }
00002a  4770              BX       lr
;;;17     //通用定时器中断初始化
                          ENDP

                  Timerx_Init PROC
;;;21     //这里使用的是定时器3!
;;;22     void Timerx_Init(u16 arr,u16 psc)
00002c  b570              PUSH     {r4-r6,lr}
;;;23     {
00002e  4604              MOV      r4,r0
000030  460d              MOV      r5,r1
;;;24     	RCC->APB1ENR|=1<<1;//TIM3时钟使能    
000032  4842              LDR      r0,|L1.316|
000034  69c0              LDR      r0,[r0,#0x1c]
000036  f0400002          ORR      r0,r0,#2
00003a  4940              LDR      r1,|L1.316|
00003c  61c8              STR      r0,[r1,#0x1c]
;;;25      	TIM3->ARR=arr;  //设定计数器自动重装值//刚好1ms    
00003e  4840              LDR      r0,|L1.320|
000040  8004              STRH     r4,[r0,#0]
;;;26     	TIM3->PSC=psc;  //预分频器7200,得到10Khz的计数时钟
000042  f04f4080          MOV      r0,#0x40000000
000046  f8a05428          STRH     r5,[r0,#0x428]
;;;27     	//这两个东东要同时设置才可以使用中断
;;;28     	TIM3->DIER|=1<<0;   //允许更新中断				
00004a  f8b0040c          LDRH     r0,[r0,#0x40c]
00004e  f0400001          ORR      r0,r0,#1
000052  f04f4180          MOV      r1,#0x40000000
000056  f8a1040c          STRH     r0,[r1,#0x40c]
;;;29     	TIM3->DIER|=1<<6;   //允许触发中断
00005a  4608              MOV      r0,r1
00005c  f8b0040c          LDRH     r0,[r0,#0x40c]
000060  f0400040          ORR      r0,r0,#0x40
000064  f8a1040c          STRH     r0,[r1,#0x40c]
;;;30     		  							    
;;;31     	TIM3->CR1|=0x01;    //使能定时器3
000068  4608              MOV      r0,r1
00006a  f8b00400          LDRH     r0,[r0,#0x400]
00006e  f0400001          ORR      r0,r0,#1
000072  f8a10400          STRH     r0,[r1,#0x400]
;;;32       	MY_NVIC_Init(1,3,TIM3_IRQChannel,2);//抢占1,子优先级3,组2									 
000076  f04f0302          MOV      r3,#2
00007a  f04f021d          MOV      r2,#0x1d
00007e  f04f0103          MOV      r1,#3
000082  f04f0001          MOV      r0,#1
000086  f7fffffe          BL       MY_NVIC_Init
;;;33     }
00008a  bd70              POP      {r4-r6,pc}
;;;34     
                          ENDP

                  PWM_Init PROC
;;;41     //psc:时钟预分频数
;;;42     void PWM_Init(u16 arr,u16 psc)
00008c  4a2b              LDR      r2,|L1.316|
;;;43     {		 					 
;;;44     	//此部分需手动修改IO口设置
;;;45     	RCC->APB1ENR|=1<<1;       //TIM3时钟使能    
00008e  69d2              LDR      r2,[r2,#0x1c]
000090  f0420202          ORR      r2,r2,#2
000094  4b29              LDR      r3,|L1.316|
000096  61da              STR      r2,[r3,#0x1c]
;;;46     
;;;47     	GPIOA->CRH&=0XFFFFFFF0;//PA8输出
000098  4a2a              LDR      r2,|L1.324|
00009a  6812              LDR      r2,[r2,#0]
00009c  f022020f          BIC      r2,r2,#0xf
0000a0  4b29              LDR      r3,|L1.328|
0000a2  f8c32804          STR      r2,[r3,#0x804]
;;;48     	GPIOA->CRH|=0X00000004;//浮空输入
0000a6  461a              MOV      r2,r3
0000a8  f8d22804          LDR      r2,[r2,#0x804]
0000ac  f0420204          ORR      r2,r2,#4
0000b0  f8c32804          STR      r2,[r3,#0x804]
;;;49     	  	
;;;50     	GPIOA->CRL&=0X0FFFFFFF;//PA7输出
0000b4  461a              MOV      r2,r3
0000b6  f8d22800          LDR      r2,[r2,#0x800]
0000ba  f0224270          BIC      r2,r2,#0xf0000000
0000be  f8c32800          STR      r2,[r3,#0x800]
;;;51     	GPIOA->CRL|=0XB0000000;//复用功能输出 	  
0000c2  461a              MOV      r2,r3
0000c4  f8d22800          LDR      r2,[r2,#0x800]
0000c8  f0424230          ORR      r2,r2,#0xb0000000
0000cc  f8c32800          STR      r2,[r3,#0x800]
;;;52     	GPIOA->ODR|=1<<7;//PA7上拉	
0000d0  461a              MOV      r2,r3
0000d2  f8d2280c          LDR      r2,[r2,#0x80c]
0000d6  f0420280          ORR      r2,r2,#0x80
0000da  f8c3280c          STR      r2,[r3,#0x80c]
;;;53     
;;;54     	TIM3->ARR=arr;//设定计数器自动重装值 
0000de  f04f4280          MOV      r2,#0x40000000
0000e2  f8a2042c          STRH     r0,[r2,#0x42c]
;;;55     	TIM3->PSC=psc;//预分频器不分频
0000e6  f8a21428          STRH     r1,[r2,#0x428]
;;;56     	
;;;57     	TIM3->CCMR1|=7<<12;  //CH2 PWM2模式		 
0000ea  f8b22418          LDRH     r2,[r2,#0x418]
0000ee  f44242e0          ORR      r2,r2,#0x7000
0000f2  f04f4380          MOV      r3,#0x40000000
0000f6  f8a32418          STRH     r2,[r3,#0x418]
;;;58     	TIM3->CCMR1|=1<<11; //CH2预装载使能	   
0000fa  461a              MOV      r2,r3
0000fc  f8b22418          LDRH     r2,[r2,#0x418]
000100  f4426200          ORR      r2,r2,#0x800
000104  f8a32418          STRH     r2,[r3,#0x418]
;;;59     
;;;60     	TIM3->CCER|=1<<4;   //OC2 输出使能	   
000108  461a              MOV      r2,r3
00010a  f8b22420          LDRH     r2,[r2,#0x420]
00010e  f0420210          ORR      r2,r2,#0x10
000112  4b0e              LDR      r3,|L1.332|
000114  801a              STRH     r2,[r3,#0]
;;;61     
;;;62     	TIM3->CR1=0x8000;   //ARPE使能 
000116  f44f4200          MOV      r2,#0x8000
00011a  f04f4380          MOV      r3,#0x40000000
00011e  f8a32400          STRH     r2,[r3,#0x400]
;;;63     	TIM3->CR1|=0x01;    //使能定时器3 										  
000122  f04f4280          MOV      r2,#0x40000000
000126  f8b22400          LDRH     r2,[r2,#0x400]
00012a  f0420201          ORR      r2,r2,#1
00012e  4b08              LDR      r3,|L1.336|
000130  801a              STRH     r2,[r3,#0]
;;;64     }  	 
000132  4770              BX       lr
;;;65     
                          ENDP

                  |L1.308|
                          DCD      0x40000410
                  |L1.312|
                          DCD      0x42210184
                  |L1.316|
                          DCD      0x40021000
                  |L1.320|
                          DCD      0x4000042c
                  |L1.324|
                          DCD      0x40010804
                  |L1.328|
                          DCD      0x40010000
                  |L1.332|
                          DCD      0x40000420
                  |L1.336|
                          DCD      0x40000400

⌨️ 快捷键说明

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