新手上路
积分 46
金钱 46
注册时间 2016-12-29
在线时间 13 小时
1 金钱
主程序
int main(void)
{
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
/* TIM2 configuration: PWM Input mode ------------------------
The external signal is connected to TIM2 CH2 pin (PA.01),
The Rising edge is used as active edge,
The TIM2 CCR2 is used to compute the frequency value
The TIM2 CCR1 is used to compute the duty cycle value
------------------------------------------------------------ */
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x1;
TIM_PWMIConfig(TIM2, &TIM_ICInitStructure);
TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);
TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);
TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);
TIM_Cmd(TIM2, ENABLE);
TIM_ITConfig(TIM2, TIM_IT_CC2 | TIM_IT_CC1, ENABLE);
while (1)
{
if(FLAGw==1)
{
LED2(1);
Delay(0x0FFFFF);
LED2(0);
Delay(0x0FFFFF);
}
else if(FLAGw==2)
{
LED1(1);
Delay(0x0FFFFF);
LED1(0);
Delay(0x0FFFFF);
}
}
}
中断函数
void TIM2_IRQHandler()
{
if(TIM_GetITStatus(TIM2,TIM_IT_CC2)== SET)
{
TIM_ClearITPendingBit(TIM2,TIM_IT_CC2);
if(FLAGq==0)
{
IC1Value = TIM_GetCapture2(TIM2);
FLAGq = 1;
}
else if(FLAGq == 1)
{
IC2Value = TIM_GetCapture2(TIM2);
if(IC2Value > IC1Value)
{
CapVal = IC2Value - IC1Value;
FLAGq = 0;
}
else
{
CapVal = ((0xFFFF -IC1Value) + IC2Value);
FLAGq = 0;
}
if((CapVal>27000)&&(CapVal<33000))
{
CapVal = 0;
FLAGw = 1;
}
else if((CapVal>64000)&&(CapVal<65000))
{
CapVal = 0;
FLAGw = 2;
}
}
}
}
我来回答