为什么我测的频率一直是ff呢,
时间:10-02
整理:3721RD
点击:
- TIM_DeInit(TIM4);
- TIM_BaseInitStructure.TIM_Period = 0xffff; //设置自动重装载值
- TIM_BaseInitStructure.TIM_Prescaler =7199;
- TIM_BaseInitStructure.TIM_ClockDivision = 0; //时钟分割,无视之
- TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
- TIM_TimeBaseInit(TIM4, &TIM_BaseInitStructure);
- //TIM4->CCER=0X0001;
- TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; //通道选择
- TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿触发
- TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;//管脚与寄存器对应关系
- TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_div1;
- TIM_ICInitStructure.TIM_ICFilter = 0x0; //滤波设置,经历几个周期跳变认定波形稳定0x0~0xF
- TIM_ICInit(TIM4, &TIM_ICInitStructure);
- TIM_SelectInputTrigger(TIM4, TIM_TS_TI2FP2); //选择IC2为始终触发源
- TIM_SelectSlaveMode(TIM4, TIM_SlaveMode_Reset);//TIM从模式:触发信号的上升沿重新初始化计数器和触发寄存器的更新事件
- TIM_SelectMasterSlaveMode(TIM4, TIM_MasterSlaveMode_Enable); //启动定时器的被动触发
- TIM_ITConfig(TIM4, TIM_IT_CC2, ENABLE); //打开中断使能CC2中断请求
- TIM_Cmd(TIM4, ENABLE); //启动TIM4
中断处理函数
- void TIM4_IRQHandler(void)
- {
- extern u16 Flow_Pulse_Frequency;
- u16 t1;
- TIM_ClearITPendingBit(TIM4, TIM_IT_CC2); //清楚TIM的中断待处理位
- t1=TIM_GetCapture2(TIM4);
- if(t1!=0)
- {
- Flow_Pulse_Frequency=10000/t1;
- BSP_Comm_Uart_Send(Flow_Pulse_Frequency,0);
- }
- else
- {
- Flow_Pulse_Frequency=0;
- BSP_Comm_Uart_Send(Flow_Pulse_Frequency,0);
- }
- }