|
我用固件库3.5开发的,再用stm32的通用定时器,用于编码器读取时,有一句代码: TIM_ICStructInit(&TIM_ICInitStructure); 然后去看了缺省值的各个参数的具体值,其中对TIM_ICSelection填入的参数是TIM_ICSelection_DirectTI不是很懂,看pdf文档中有说明:
但是我没怎么看懂,求个大神,能不能给我详细点解释一下呀,这句话是不是等于寄存器操作时候的这两句代码: TIM2->CCER |= 0<<1; //IC1不反向 TIM2->CCER |= 0<<5; //IC2不反向 |
微信公众号
手机版
这里就是讲TI1、TI2与IC1或IC2的连接关系,
TI3 TI4与IC3或IC4的连接关系。
TIM_ICSelection_DirectTI ==》TI1,TI2,TI3,TI4 对应IC1,IC2,IC3,IC4;
TIM_ICSelection_IndirectTI==>TI1,TI2,TI3,TI4 对应IC2,IC11,IC4,IC3;
正解,Direct就是1-1,2-2,3-3,4-4;Indirect就是1-2,2-1,3-4,4-3。
感谢楼上的解答,我明白了
[](https://)
看了楼上的解释我觉得能理解了。
TIM_ICSelection_DirectTI:
输入信号TIMx_CH1→TI1→TI1FP1→IC1;
输入信号TIMx_CH2→TI2→TI2FP2→IC2;
输入信号TIMx_CH3→TI3→TI1FP3→IC3;
输入信号TIMx_CH4→TI4→TI2FP4→IC4;
TIM_ICSelection_IndirectTI:
输入信号TIMx_CH1→TI1→TI1FP2→IC2;
输入信号TIMx_CH2→TI2→TI2FP1→IC1;
输入信号TIMx_CH3→TI3→TI1FP4→IC4;
输入信号TIMx_CH4→TI4→TI2FP3→IC3;
看这个结构框图就好理解了,TIM_Input_Capture_Selection就是选择定时器的捕获/比较通道,实际上就是图上的数据选择器,所以你在看标准库的函数时会发现刚好有三个参数可以选:TIM_ICSelection_DirectTI,TIM_ICSelection_IndirectTI,TIM_ICSelection_TRC。
我们知道一些I/O引脚可以复用以连接至定时器模块,它是信号进出定时器的实际硬件通道,也就是图上的TIMx_CH1/2/3/4,我一般叫它定时器x的通道1/2/3/4。而从TIMx_CH1/2/3/4引脚输入的信号TI1/2/3/4(如果你对时钟模式比较熟悉你就会发现TIx正好就是选择外部时钟模式一的外部引脚输入时的名字)经过滤波和极性选择(边沿检测)后的新名字会带上FP,F正好表示Filter滤波,P表示Polarity极性,而最后的1/2/3/4表示进入的捕获通道,比如FP1就是进入捕获通道1,也就是IC1。
正如字面意思,DirectTI表示通道与输入引脚直接相连,IndirectTI表示通道与输入引脚交叉相连。 因此,使用定时器通道1并选择DirectTI时,得到的信号是TI1FP1;使用定时器的通道1并选择IndirectTI时,得到的信号是TI1FP2。
总结就是选择TIx与ICx的连接关系。