请问香主,stm32f103zet6一共有几路硬件PWM
STM32没有所谓专门的硬件PWM模块,PWM波形可以通过定时器产生
STM32F103ZET6有4个通用定时器,2个高级定时器,最多可以产生30路PWM信号。
香主,我这样理解可以吗?
CH一共有4路,TIM普通的有2,3,4,是吧,反正就是说
TIM2_CH1,TIM2_CH2,TIM2_CH3,TIM2_CH4
TIM3_CH1,TIM3_CH2,TIM3_CH3,TIM3_CH4
TIM4_CH1,TIM4_CH2,TIM4_CH3,TIM4_CH4
都是相互独立的,我可以随便产生PWM或者计时。
比如:TIM4_CH1,TIM4_CH2可以产生PWM,TIM4_CH3,TIM4_CH4我可以用作定时器计时。
基本可以这样理解
但是会有些限制,最好你能把你真正需要的配置提出来讨论,这样更有针对性。
我需要的配置,如下
TIM2_CH1 ------- 外部输入的一个频率信号
TIM2_CH2 ------- PWM输出
TIM3_CH1 ------- PWM输出,频率在1Hz左右,方波
TIM3_CH2 ------- 同TIM3_CH1
TIM3_CH3 ------- 同TIM3_CH1
TIM3_CH4 ------- 同TIM3_CH1
TIM4_CH1 ------- 也是外部输入的一个频率信号,同TIM2_CH1
TIM4_CH2 ------- 同TIM4_CH1
有详细的参数吗?
Freq是什么?是Frequence?什么意思?参数?
PWM的频率?占空比?调整精度?
Pulse是什么?脉冲?单脉冲?频率?宽度?
Flow是什么?
谢谢香主,请看下面
Freq 是一个输入的频率,用来计算address的
PWM,Pulse 是输出
Flow 也是一个输入,
另外,TIM2,3,4跟TIM1有什么具体区别?因为TIM1是高级的,TIM2,3,4是普通的,高级和普通到底区别在哪里呢?
如果我TIM2_CH1用作Freq捕获,TIM2_CH2用作PWM输出。 那么这两个通道的基准频率是否是一样的呢?
是否可以这样理解:TIMx的任何一个channel都可以随意设置? 您上面说有限制,那限制在哪里呢?
我觉得TIMx应该会有什么寄存器是自己特有的,比如:某个寄存器TIM2有,TIM3没有,或者说TIM2_CH1有,TIM2_CH2没有, 是否有这样的寄存器存在呢?
TIM1和TIM8是高级定时器,与普通定时器的主要区别是电机驱动
TIMx的任何一个channel不可以随意设置,TIMx的所有功能是通过捕获和比较完成的,捕获和比较是相对于定时器中的计数器和重装载寄存器完成,每个TIMx只有一个计数器和一个重装载寄存器,但每个通道都有一对捕获和比较寄存器;所有的限制都是由此引申出来的。
TIM2、TIM3、TIM4和TIM5是完全一样的,没有所谓特有的寄存器只存在于某个TIMx而不存在于其它TIMy。
关于我在6楼的参数问题,你还是没有回答,我也没法具体回答你的问题。
我在6楼做了一个解释
那么香主,这样看来,如果某个TIMx用作了PWM方式,比如TIM2_CH2输出PWM,那么这个TIM2我就不能作为普通的定时器计数了,因为只有一个计数器重装载寄存器,对吧?
而且比如TIM3,我4个通道都要PWM输出方波,又因为计数器TIM3只有一个,所以对这4个通道来说,计数和重装载值都是相同的,只不过占控比可以根据我的意愿去调整, 其他TIMx也都是一样的道理,是不是这个意思?
这样看来,我要用定时器计时的话,只能用TIM1,TIM5,TIM8了,对吧。并且我现在不涉及电机驱动的东西,所以对我来说,TIM1,TIM8跟普通的TIMx也是一样用法的,是吧?
你的说法基本是正确的,但有例外
1)如果某个TIMx用作了PWM方式,比如TIM2_CH2输出PWM,那么这个TIM2我就不能作为普通的定时器计数了,因为只有一个计数器重装载寄存器
如果你要求的定时周期与PWM频率是整除因子的关系,或你使用输出比较的方式产生PWM波形,则TIM2_CH2输出PWM时,其它通道可以作为定时。
2)比如TIM3,我4个通道都要PWM输出方波,又因为计数器TIM3只有一个,所以对这4个通道来说,计数和重装载值都是相同的,只不过占控比可以根据我的意愿去调整,其他TIMx也都是一样的道理
使用PWM模式时,基本上可以这样理解。但可以有例外。比如可以在某个通道使用输出比较的模式产生频率为基准频率倍数的PWM波形,也可以在所有通道使用输出比较的模式产生任意不同的PWM频率,但控制相对复杂些。
3)如果不涉及电机驱动的东西,TIM1、TIM8跟普通的TIMx是一样用法。
同一个TIMx不同通道捕获和PWM输出的问题
香主,还有个问题忘记请教了。
因为现在TIM2_CH1我是用做捕获功能,TIM2_CH2是用做PWM输出的。那这样的话是否就会有冲突呢? 因为捕获的基准跟PWM的基准不一定是相同的。
另外,PWM输出的话,比如现在是HIGH 20MS, LOW 80MS的波形,那么TIMx是否有输出翻转的功能?如果有,硬件设计时就可以少一些了。
关于同一个TIMx不同通道捕获和PWM输出的问题
可以使用定时器的PWM模式产生PWM波形,也可以使用输出比较模式产生PWM波形,后者稍微麻烦一些。
使用PWM模式产生PWM波形时,如果你需要捕获的波形频率高于产生的PWM波形,则可以在同一个定时器上的不同通道实现,否则需要软件的介入。
使用输出比较模式产生PWM波形时,因为计数器不需要复位归零,这时输入捕获将不受影响。
TIMx有输出翻转的功能。
回香主12楼
输出比较模式中:也就是把TIMx_CCMRx中的OCxPE = 0即可,不使用预装载寄存器,是吧。
如果输出用PWM模式,必须捕获波形频率高于输出的PWM频率 ? 如果高于的话,用一个定时器就可以同时使用在CH1捕获,CH2 PWM输出, 那定时器重装载的话,会对输入捕获有影响吗? 这个地方有点模糊,麻烦香主解释透彻一下,谢谢了
输入捕获的目的是记录下要捕获事件发生的事件
定时器重装载的话,你的定时基准就发生了变化,如果你不能把这个变化通过软件修正,当然会对输入捕获有影响了。
不知我这样理解是否有误
如果用PWM输出模式,定时器重装载肯定是会改变定时基准的,那样的话,输入捕获就肯定受影响了。
你说的这个变化通过软件修正,没明白你的意思。
你说的---“使用PWM模式产生PWM波形时,如果你需要捕获的波形频率高于产生的PWM波形,则可以在同一个定时器上的不同通道实现,否则需要软件的介入。”
如果现在PWM输出定时器重装载了,那么定时基准肯定就变化了,那捕获肯定受影响。那你说的当捕获频率高于产生的PWM波形的情况下,可以在同一定时器上不同通道实现, 那样的话,这种情况下,还是需要通过软件介入来修正的阿。
软件修正的意思就是在重装载时通过中断记录下来
然后在捕获后加上重装载的周期。
如果捕获的信号周期快于重装载的周期,则在还没有发生重装载时捕获就完成了,当然不必进行软件修正了。
当然如果希望连续地捕获,而预期的捕获时间会发生在重装载之后,同样需要修正的。
如果你的系统中定时器数目够用,请不要考虑这么复杂,越简单越好。
香主,我电路这样改可以吗?
我把TIM1_CH1上的输入捕获改到TIM4_CH3上,这样,TIM4的channel都是输入捕获了,TIM2上就channel2是PWM输出。 这样应该没问题了吧
谢谢香主的详细解答
弱弱的问一下,例程中um0427FWLibexamplesTIM 哪个文件夹是专门用于输入捕获的?