求教STM32 PWM几个寄存器的疑难杂症!!!

2019-07-21 07:45发布

本帖最后由 xiao19344859 于 2018-11-19 22:49 编辑

各位看官请仔细观看粉 {MOD}文字,黑 {MOD}文字基本上都是资料上的!!!


研究STM32的 PWM有好几天了,当然了每天只有不到2小时的时间,遇到几个疑难杂症,

------------------------------------------------------------------------------------------------------------
110 :PWM模式1-  在向上计数时,一旦TIMx_CNT<TIMx_CCR1 时通道1为有效电平,否则为
无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1 时通道1 为无效电平(OC1REF=0) ,否
则为有效电平(OC1REF=1) 。
111 :PWM模式2-  在向上计数时,一旦TIMx_CNT<TIMx_CCR1 时通道1为无效电平,否则为
有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1 时通道1 为有效电平,否则为无效电
平。
注1 :一旦LOCK 级别设为3(TIMx_BDTR寄存器中的LOCK 位) 并且CC1S=’00’(该通道配置成输
出)则该位不能被修改。
注2 :在PWM模式1 或PWM模式2 中,只有当比较结果改变了或在输出比较模式中从冻结模式
切换到PWM模式时,OC1REF电平才改变。

======================================================
这两种模式都能理解,简单的说就是 计数器的值和目标值比大小,
关键的问题是这里的有效电平是什么意思,查阅各种资料都没得到想要的答案,
或者说和某个寄存器的设置有关。

---------------------------------------------------------------------------------------------------
还有TIMx_CCER寄存器中的第一位(CC1P),第5位(CC2P),有什么用第5位我用程序反复做过实验,结果稍后再说,下面是该寄存器的描述
=================================================
CC1P:输入/ 捕获1输出极性  (Capture/Compare 1 output polarity)  位1
CC1 通道配置为输出:
0:OC1高电平有效
1:OC1低电平有效
CC1 通道配置为输入:
该位选择是IC1 还是IC1 的反相信号作为触发或捕获信号。
0:不反相:捕获发生在IC1 的上升沿;当用作外部触发器时,IC1 不反相。
1:反相:捕获发生在IC1 的下降沿;当用作外部触发器时,IC1 反相。

===============================================
首先配置为输入不考虑,
然后这里的 OC1 高电平有效和低电平有效又是什么意思?
因为不知道具体有什么用,所以反复做了实验得到的结果如下

***********************************************************************************
经过测试发现选择PWM1模式的时候  TIM3->CCER|=1<<5; 才能正常输出, 如果该位置0 IO口始终为低电平
经过测试发现 选择PWM2模式的时候  TIM3->CCER|=0<<5; 才能正常输出,如果该位置1 IO口始终为低电平


上面的两条代码在原子的 PWM输出实验中测试过,而且只添加了这一行代码,其它的没有任何改动,得到的结果是一样的
----------------------------------------------------------------------------------------------------------------------------

同时我还在PWM模式下测试了一下向下和向上的计数方式,
TIM3->CR1|=1<<4;//向下计数  经过实验发现单独只设置此位在PWM模式下(1或2)没有任何区别,目前还不知道是否还要和其它寄存器同时设置才有作用。


目前就这么几个问题吧,查阅了很多资料,也在论坛查看了很多其它的帖子,依然没有得到想要的答案,也许是我的悟性实在是太低了!!!!




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。