#include "srbh.h"//输入捕获
#include "oled.h"


//定时器2通道2输入捕获配置
//arr：自动重装值
//psc：时钟预分频数
//PA1
void TIM2_Cap_Init(u16 arr,u16 psc)
{		 
	RCC->APB1ENR|=1<<0;   	//TIM2 时钟使能 
	RCC->APB2ENR|=1<<2;    	//使能PORTA时钟  
	 
	GPIOA->CRL&=0XFFFFFF0F;	//PA1 清除之前设置  
	GPIOA->CRL|=0X00000080;	//PA1 输入   
	GPIOA->ODR|=0<<0;		//PA1 下拉
	  
 	TIM2->ARR=arr;  		//设定计数器自动重装值   
	TIM2->PSC=psc;  		//预分频器 

	TIM2->CCMR1|=1<<8;		//CC2S=01 	选择输入端 IC2映射到TI2上
 	TIM2->CCMR1|=1<<12; 	//IC2F=0001 配置输入滤波器 以Fck_int采样，2个事件后有效
 	TIM2->CCMR1|=0<<10; 	//IC2PS=00 	配置输入分频,不分频 

	TIM2->CCER|=0<<5; 		//CC2P=0	上升沿捕获
	TIM2->CCER|=1<<4; 		//CC2E=1 	允许捕获计数器的值到捕获寄存器中

	TIM2->DIER|=1<<1;   	//允许捕获中断				
	TIM2->DIER|=1<<0;   	//允许更新中断	
	TIM2->CR1|=0x01;    	//使能定时器2
	MY_NVIC_Init(2,0,TIM2_IRQn,2);//抢占2，子优先级0，组2	   
}

//定时器2中断服务程序	
void TIM2_IRQHandler(void)
{ 		    
	u16 tsr;
	static u16 i;
	tsr=TIM2->SR;
		if(tsr&0x04)//捕获2发生捕获事件
		{	
    i++;
	OLED_ShowNum(20,20,i,2,12,1);
	OLED_Refresh();
		}			     	    					   
	TIM2->SR=0;//清除中断标志位 	    
}
