哎 写程序就像大姨妈,有时程序总会来那么几天让你悲催。。。
下面有些问题论坛上也有,但我看都没人回答,现在遇到了,希望有人回答一下。。谢谢
如题 我是用TIME2来检测0-50Hz的方波 ,最开始只能测到1K以上的方波,但是根据网友的提醒,我加了 TIM_TimeBaseStructure.TIM_Period = 65535; //周期 TIM_TimeBaseStructure.TIM_Prescaler = 1199; //分频
现在的配置,最高只能测到14hz,再高读出来就是0了,分频系数与测频范围是怎么算的呢?而且我用的IC2 为什么我的配置进不去中断,只有当 TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);改成 TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP1);时会进入中断,但我配置的就是2啊。。 下面是TIME2配置全部代码,为什么3.5的库里并没有输入模式的配置?还请高手们耐心解答一下 感激不尽 最后再问一下,如果我要计时这段脉冲的时间应该怎么做,期间频率是会变化的。。
void TIM2_Configuration()
{
TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 65535; //周期 TIM_TimeBaseStructure.TIM_Prescaler = 1199; //分频
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
// TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_ICAP; //配置为输入捕获模式 没有输入模式的配置?
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;
TIM_PWMIConfig(TIM2, &TIM_ICInitStructure);
/* Select the TIM3 Input Trigger: TI2FP2 */
TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2);
/* Select the slave Mode: Reset Mode */
TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);
/* Enable the Master/Slave Mode */
TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);
// TIM_SelectInputTrigger(TIM2, TIM_TS_TI1FP1);
/* TIM enable counter */
TIM_Cmd(TIM2, ENABLE);
/* Enable the CC2 Interrupt Request */
TIM_ITConfig(TIM2, TIM_IT_CC2, ENABLE);
}
另外谁有硬件的I2C程序可供学习,还请共享一下 一并感激 |