TIMx门控模式问题

发布: 2009-3-09 14:37 | 作者: wanghow | 来源: StmFans思蜕盟 OPELC 自由电子联盟

参考手册里讲门控模式时从TI1输入,TS=101,SMS=101,这样计数器的时钟是什么?
(SMS不等于000即内部时钟,SMS也不等于111即外部时钟1)

还有在demo的例8里面,主TIM的溢出作为从TIM的时钟,但从TIM使用的是门控模式,这怎么理解?是主TIM的溢出既作为从TIM的时钟又作为门控信号吗?我测了波形,是正确的。
binglin (2009-3-09 14:47:03)
SMS=101:门控模式,当触发输入(TRGI)为高时,计数器的时钟开启;一旦触发输入变为低,则计数器停止(不复位),计数器的启动和停止都是受控的。

TS=101:使用滤波后的定时器输入(TI1FP1)作为触发输入。

你所说的demo的例8是什么例程?
wanghow (2009-3-09 14:49:43)
就是FWLib里面的例子。
刚才说的那个计数器的时钟是什么?由什么来驱动的?
谢谢
binglin (2009-3-09 14:56:19)
我正在找你说的例8呢,库里例子没有例8这个目录。
wanghow (2009-3-09 14:59:40)
不会吧
STM32F10xFWLib\FWLib\examples\TIM\Example8
找不到的话还是看看第一个问题吧,谢谢了
binglin (2009-3-09 15:04:57)
从模式:门控模式
计数器的使能依赖于选中的输入端的电平。
在如下的例子中,计数器只在TI1为低时向上计数:

配置通道1以检测TI1上的低电平。配置输入滤波器带宽(本例中,不需要滤波,所以保持IC1F=0000)。触发操作中不使用捕获预分频器,所以不需要配置。CC1S位用于选择输入捕获源,置TIMx_CCMR1寄存器中CC1S=01。置TIMx_CCER寄存器中CC1P=1以确定极性(只检测低电平)。

置TIMx_SMCR寄存器中SMS=101,配置定时器为门控模式;置TIMx_SMCR寄存器中TS=101,选择TI1作为输入源。

置TIMx_CR1寄存器中CEN=1,启动计数器。在门控模式下,如果CEN=0,则计数器不能启动,不论触发输入电平如何。
只要TI1为低,计数器开始依据内部时钟计数,在TI1变高时停止计数。当计数器开始或停止时都设置TIMx_SR中的TIF标置。
TI1上升沿和计数器实际停止之间的延时取决于TI1输入端的重同步电路。
binglin (2009-3-09 15:17:45)
上面的就是你要的内容了,在参考手册中有说。

你所说的STM32F10xFWLib\FWLib\examples\TIM\Example8,在我的几个版本的固件库中不存在。


101.jpg



上面数据手册中已表明,时钟源是:Counter clock=CK_CNT=CK_PSC
wanghow (2009-3-09 15:22:30)
我说的就是这个源到底是什么源?或者说有可能是什么源?
因为它不是内部时钟也不是外部时钟1,难道只能是外部时钟2?
binglin (2009-3-09 15:46:59)
Counter clock=CK_CNT=CK_PSC这个时钟源在这里由TS=101选择了(TI1FP1),你看看时钟树,TI1FP1是联接到TI1上,即可以来自外部的TIMx_CH1上。

我的理解就是这样,不知正确与否,请指正。
wanghow (2009-3-09 16:27:03)
我的理解是这样的:TS选择的是TRGI,而TRGI作为门控输入(SMS=101),也就是说TI1FP1是门控信号。这样还少一个驱动计数器的时钟。
不知道对不对。
binglin (2009-3-09 16:31:53)
是的,我也不大明白。
wanghow (2009-3-09 16:35:53)
帮我问问对这块了解的高手啊,谢谢了。
还有“使用一个定时器去使能另一个定时器”标题中,“两个定时器的
时钟频率都是由预分频器对CK_INT除以3(fCK_CNT=fCK_INT/3)”,这是怎么设置的?因为既然是门控,SMS=101,不可能是内部时钟啊(SMS=000)。
catwill (2009-3-09 16:48:23)
观战……
太深奥,看8懂……
ziran22 (2009-7-12 15:15:41)
学习学习,跟个风
ziran22 (2009-7-12 15:15:48)
学习学习,跟个风
suoha518 (2009-12-12 15:44:16)
“你有多爱我?”

“一毛钱之多。”

“只有这么一点么?”

“一毛钱不就是‘十分’吗?”