新手上路
- 积分
- 45
- 金钱
- 45
- 注册时间
- 2014-8-1
- 在线时间
- 5 小时
|

楼主 |
发表于 2016-6-6 17:25:16
|
显示全部楼层
void Capture_Init(u16 arr,u16 psc)
{
RCC->APB2ENR|=1<<0; //
RCC->APB1ENR|=1<<0; //TIM2时钟使能
RCC->APB2ENR|=1<<2; //使能PORTA时钟
TIM2->ARR=arr; //设定计数器自动重装值
TIM2->PSC=psc; //预分频器,
GPIOA->CRL&=0XFFFFFFF0;//PA0输出
GPIOA->CRL|=0X00000004;//复用功能输出
GPIOA->ODR|=1<<0;//PA0上拉
TIM2->SMCR|=0x00D4;
//TIM2->SMCR|= 1<<5; //MSM=1 涓?浠庢ā寮?
//TIM2->SMCR|= 5<<4; //TS=101 瑙﹀彂閫夋嫨
//TIM2->SMCR|= 4<<0; //SMS=100 澶嶄綅妯″紡
TIM2->CCMR1|=1<<0;//CC1S=01选择输入端
TIM2->CCMR1|=3<<4; //IC1F=0011配置输入滤波器
TIM2->CCER|=0<<1; //CC1P=0选择有效转换边沿上升沿有效
TIM2->CCMR1|=0<<2; //IC1PS=00配置输入分频?
TIM2->CCER|=1<<0; //CC1E=1允许捕获计数器的值到捕获寄存器中
TIM2->DIER|=1<<1; //允许更新捕获中断
TIM2->DIER|=1<<0; //允许更新中断
TIM2->CR1|=0x01; //使能定时器2
MY_NVIC_Init(1,3,TIM2_IRQChannel,2);//抢占1,子优先级3,组2
}
//定时器2中断服务程序
void TIM2_IRQHandler(void)
{
if(TIM2->SR&0X0002)
{
TIM2->SR&=~(1<<1); //清除中断标志位
IC2Value=TIM2->CCR1;//读取捕获值
}
if(TIM2->SR&0X0001)
{
TIM2->SR&=~(1<<0); //清除中断标志位
// IC2Value=65535;
}
}
|
|