在应用的时候将将TIM2的CH1,Ch2两个通道设置为输入捕获模式,为了测量路信号的频率
关于TIM2的配置如下
TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_ICAP; //配置为输入捕获模式
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; //选择通道1
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_ICInit(TIM2, &TIM_ICInitStructure);
TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_ICAP; //配置为输入捕获模式
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; //选择通道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_ICInit(TIM2, &TIM_ICInitStructure);
/* Select the TIM2 Input Trigger: TI2FP2 【输入触发源选择】*/
TIM_SelectInputTrigger(TIM2,TIM_TS_TI1FP1); //参考TIM结构图选择滤波后的TI2输入 寄存器SMCR
/* Select the slave Mode: Reset Mode */
TIM_SelectSlaveMode(TIM2,TIM_SlaveMode_Reset); //复位模式-选中的触发输入(TRGI)的上升沿初始化计数器,并且产生一个更新线号
/* Enable the Master/Slave Mode */
TIM_SelectMasterSlaveMode(TIM2,TIM_MasterSlaveMode_Enable); //主从模式选择
这里注意了 TIM_SelectInputTrigger(TIM2,TIM_TS_TI1FP1); //参考TIM结构图选择滤波后的TI2输入 寄存器SMCR
如果这么设置的输入触发源为TI1FP1 我只是要捕捉CH1的信号频率 ,但是CH2不接信号读出来的数据跟CH1一模一样,如果设置为
TIM_SelectInputTrigger(TIM2,TIM_TS_TI2FP2); 设置的输入触发源为TI2FP2,那么就能准确的读回来
CH2上的信号频率,此时CH1没有接信号度回来全部是0
为什么设置了前者TIM_SelectInputTrigger(TIM2,TIM_TS_TI1FP1); 两个通道CH1,CH2都有数据呢 纳闷中
希望这个不会是STM32的bug,正在寻找解决的办法。。。。
用户377235 2012-4-2 13:40