- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
-
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-
- TIM_InternalClockConfig(TIM3);
-
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInitStructure.TIM_Period = 65536 - 1; //ARR
- TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1; //PSC
- TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
- TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);
-
- TIM_ICInitTypeDef TIM_ICInitStructure;//定义输入捕获结构体
- TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;//通道1
- TIM_ICInitStructure.TIM_ICFilter = 0xF;//滤波器开最大
- TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;//上升沿触发
- TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;//不分频
- TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;//直接模式
- TIM_ICInit(TIM3, &TIM_ICInitStructure);
-
- TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);//选择触发源
- TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);//从模式
-
- TIM_Cmd(TIM3, ENABLE);//开启定时器
- }
- uint32_t IC_GetFreq(void)
- {
- return 1000000 / (TIM_GetCapture1(TIM3) + 1);
- }
-
|