woshilee 发表于 2015-7-25 15:46:22

关于072RB定时器输出PWM问题

TIM1输出PWM时必须有TIM_CtrlPWMOutputs(TIM1, ENABLE);,而TIM3不用这条指令就可以直接输出PWM,并且TIM_CtrlPWMOutputs(TIM3, DISABLE);还关闭不了PWM输出,请问这是为什么呢?

安臣 发表于 2015-7-25 15:53:29

我用库不一样 。 我的建议是楼主可以在看看库函数的代码然后再看看 寄存器

woshilee 发表于 2015-7-25 15:56:16

安臣 发表于 2015-7-25 15:53
我用库不一样 。 我的建议是楼主可以在看看库函数的代码然后再看看 寄存器 ...

void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_TIM_LIST2_PERIPH(TIMx));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
    /* Enable the TIM Main Output */
    TIMx->BDTR |= TIM_BDTR_MOE;
}
else
{
    /* Disable the TIM Main Output */
    TIMx->BDTR &= (uint16_t)(~((uint16_t)TIM_BDTR_MOE));
}
}

woshilee 发表于 2015-7-25 16:10:20

woshilee 发表于 2015-7-25 15:56
void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState)
{
/* Check the parameters * ...

C:\Documents and Settings\Administrator\桌面

woshilee 发表于 2015-7-25 16:11:55

woshilee 发表于 2015-7-25 16:10


原来TIM3没有那个寄存器

creep 发表于 2015-7-25 17:19:10

woshilee 发表于 2015-7-25 16:11
原来TIM3没有那个寄存器

那个寄存器只有高级定时器才有的。

woshilee 发表于 2015-7-25 21:53:05

creep 发表于 2015-7-25 17:19
那个寄存器只有高级定时器才有的。

恩,但是库里和手册里没有直接说

creep 发表于 2015-7-25 22:16:11

woshilee 发表于 2015-7-25 21:53
恩,但是库里和手册里没有直接说

这个手册肯定是有描述的。至于库函数的注释肯定也说明了。
如果你使能了参数检查:【STM32F303开发】+库函数参数检查,程序就会检测到你调用的参数错误了,这个在各个系列的库里都有参数检测,可能命名不太一样。

阳光_~~ 发表于 2015-7-26 02:48:52

先把文档研究透先,2个TIMER还是不一样的,TIM3是最简单的不涉及到互补驱动,如果只是简单的PWM驱动就不要用TIM1,TIM1很繁琐。至于你说的TIM3无法关断PWM,好像TIM3真没MOE这个位,你可以尝试改变CCR的值来ENABLE和DISABLE,我经常这样干:lol

你好我好大家好! 发表于 2015-7-26 15:55:10

这么奇怪?
页: [1] 2
查看完整版本: 关于072RB定时器输出PWM问题