打印

香主,请教下STM32103的定时器输出不同频率的PWM的问题

[复制链接]
1982|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuluyiyi|  楼主 | 2012-6-5 15:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yuluyiyi 于 2012-6-8 09:57 编辑

用的ST固件库的例程,想用TIM1实现四路占空比为50%,频率可调的脉冲输出,发现在TIM3下可以实现四路PWM输出,但是改成TIM1就不行了,难道实现同样的功能定时器的配置有所不同么?
代码如下:
int main(void)
{
    RCC_Configuration();
  /* NVIC Configuration */
  NVIC_Configuration();
/* GPIO Configuration */
  GPIO_Configuration();
    /* Compute the prescaler value */
  /* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = 65535;
  TIM_TimeBaseStructure.TIM_Prescaler = 29;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  /* Output Compare Toggle Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
  TIM_OC1Init(TIM1, &TIM_OCInitStructure);
  TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Disable);
/* Output Compare Toggle Mode configuration: Channel2 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR2_Val;
  TIM_OC2Init(TIM1, &TIM_OCInitStructure);
  TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Disable);
  /* Output Compare Toggle Mode configuration: Channel3 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR3_Val;
  TIM_OC3Init(TIM1, &TIM_OCInitStructure);
  TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Disable);
  /* Output Compare Toggle Mode configuration: Channel4 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR4_Val;
  TIM_OC4Init(TIM1, &TIM_OCInitStructure);
  TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Disable);
  /* TIM enable counter */
  TIM_Cmd(TIM1, ENABLE);
  /* TIM IT enable */
  TIM_ITConfig(TIM1, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);
TIM_CtrlPWMOutputs(TIM1, ENABLE);
  while (1)
  {}
}
沙发
suse-lj| | 2012-6-6 10:09 | 只看该作者
高级定时器   要输出PWM波 ,  得必须打开主输出    如果使能了CCER中得CxxE则必须值BDTR中的MOE,否则不能输出PWM波  。没用过 固件库,不知道你配置了没有?

使用特权

评论回复
板凳
dream-yi| | 2012-6-7 14:44 | 只看该作者
可以啊,配置一样。就是浪费一点。

使用特权

评论回复
地板
寂寞西瓜| | 2012-6-8 09:43 | 只看该作者
另外,tim1在apb2,tim3和其他定时器在apb1,时钟不一样

使用特权

评论回复
5
yuluyiyi|  楼主 | 2012-6-8 09:54 | 只看该作者
时钟开了,是在APB2 4# 寂寞西瓜

使用特权

评论回复
6
yuluyiyi|  楼主 | 2012-6-8 09:56 | 只看该作者
本帖最后由 yuluyiyi 于 2012-6-8 10:00 编辑

开了主时钟输出,输出的频率是固定的,两个不同的PWM值出来的波形是一样的,频率不变? 2# suse-lj

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

72

帖子

0

粉丝