TIM1产生PWM信号一个奇怪的问题。

2019-07-21 05:51发布

问题是这样。我用高级定时器TIM1输出一路PWM信号来控制舵机。舵机是SG90,控制要求是输出周期为20ms的PWM,占空比在0.5~2.5ms之间,就能控制了。
然后我在初始化TIM_OCInitTypeDef这个输出比较结构体的时候,里面的TIM_Pulse这个成员,我如果直接在初始化函数里面给它赋了值,TIM_Pulse=1000(1ms),那么我在main()函数里面,调用GPIO初始化和TIM的初始化以后,程序跑起来,舵机这么都不转。这时候我用模拟示波器去看,发现PA8(TIM1的CH1通道)输出的是标准的PWM信号。不仅舵机不动这个问题,还有一个问题是,理论上算得PWM周期是20ms, 我取的psc=71,arr=19999。 在模拟示波器上一个周期却是13ms。让我特别困惑。

今天我把TIM_Pulse这个成语,在初始化的时候配置为0。然后main()里面调用的时候以参数的形式输入给TIM的配置函数。这个时候舵机就能正常动起来了。
这是怎么一回事呢?
而且这样以后我用模拟示波器去观察PA8,发现这个时候没有PWM波形了。。
这又是怎么一回事呢?

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