初级会员

- 积分
- 122
- 金钱
- 122
- 注册时间
- 2014-11-15
- 在线时间
- 17 小时
|

楼主 |
发表于 2014-11-26 15:50:29
|
显示全部楼层
回复【5楼】lycreturn:
---------------------------------
清除了,刚看了下,是TIM2配置错误
u16 tsr;
tsr=TIM2->SR;
if(tsr&0x02)//捕获1发生捕获事件
{
if(TIM2CH1_CAPTURE_STA&0X40) //捕获到一个下降沿
{
TIM2CH1_CAPTURE_STA=0X00;
TIM2->CCER&=~(1<<1); //CC1P=0 设置为上升沿捕获
}
else //还未开始,第一次捕获上升沿
{
TIM2CH1_CAPTURE_STA|=0X40; //标记捕获到了上升沿
TIM2->CCER|=1<<1; //CC1P=1 设置为下降沿捕获
}
}
if(tsr&0x04)//捕获2发生捕获事件
{
if(TIM2CH2_CAPTURE_STA&0X40) //捕获到一个下降沿
{
TIM2CH2_CAPTURE_STA=0X00;
TIM2->CCER&=~(1<<5); //CC1P=0 设置为上升沿捕获
}
else //还未开始,第一次捕获上升沿
{
TIM2CH2_CAPTURE_STA|=0X40; //标记捕获到了上升沿
TIM2->CCER|=1<<5; //CC1P=1 设置为下降沿捕获
}
}
if(tsr&0x08)//捕获3发生捕获事件
{
if(TIM2CH3_CAPTURE_STA&0X40) //捕获到一个下降沿
{
TIM2CH3_CAPTURE_STA=0X00;
TIM2->CCER&=~(1<<9); //CC1P=0 设置为上升沿捕获
}
else //还未开始,第一次捕获上升沿
{
TIM2CH3_CAPTURE_STA|=0X40; //标记捕获到了上升沿
TIM2->CCER|=1<<9; //CC1P=1 设置为下降沿捕获
}
}
}
TIM2->SR=0;//清除中断标志位
配置:
TIM2->CCMR1|=1<<0;
TIM2->CCMR1|=0<<2;
TIM2->CCMR1|=0<<4;
TIM2->CCMR1|=1<<8;
TIM2->CCMR1|=0<<10;
TIM2->CCMR1|=0<<12;
TIM2->CCMR2|=1<<0;
TIM2->CCMR2|=0<<2;
TIM2->CCMR2|=0<<4;
TIM2->CCER|=0<<1; //CC1P=0 上升沿捕获
TIM2->CCER|=1<<0; //CC1E=1 允许捕获计数器的值到捕获寄存器中
TIM2->DIER|=1<<1; //允许捕获中断
TIM2->DIER|=1<<0; //允许更新中断
TIM2->DIER|=1<<2; //允许捕获中断
TIM2->DIER|=1<<3;
这么配出来后怎么成了一个定时中断了,不是捕获,求解答 |
|