打印
[AT32F403/403A]

定时器输出PWM会互相影响

[复制链接]
582|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我们都懂的|  楼主 | 2021-4-15 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题描述:如果定时器4输出PWM最后稳定在3kHz,当我开启定时器5的时候,定时器4的输出就变了,但我看了TMR4寄存器的值是没有变化的。
/***************************************************************************/
//*******函数名:void TIM4Config(u16 PeriodValue1)
//*******说  明: 定时器4配置
//*******参  数:
//*******返回值:
/***************************************************************************/
void TIM4Config(u16 PeriodValue1)
{
        TMR_TimerBaseInitType  TMR_TMReBaseStructure;
        TMR_OCInitType  TMR_OCInitStructure;

  /* Compute the prescaler value */
  TMR_TMReBaseStructure.TMR_Period = PeriodValue1;
  TMR_TMReBaseStructure.TMR_DIV = 999;                        //36khz               
  TMR_TMReBaseStructure.TMR_ClockDivision = 0;
  TMR_TMReBaseStructure.TMR_CounterMode = TMR_CounterDIR_Up;

  TMR_TimeBaseInit(TMR4, &TMR_TMReBaseStructure);

  /* PWM1 Mode configuration: Channel1 */
  TMR_OCInitStructure.TMR_OCMode = TMR_OCMode_PWM1;
  TMR_OCInitStructure.TMR_OutputState = TMR_OutputState_Enable;
  TMR_OCInitStructure.TMR_Pulse = PeriodValue1/2;
  TMR_OCInitStructure.TMR_OCPolarity = TMR_OCPolarity_High;

  TMR_OC1Init(TMR4, &TMR_OCInitStructure);

  TMR_OC1PreloadConfig(TMR4, TMR_OCPreload_Enable);

  TMR_ARPreloadConfig(TMR4, ENABLE);

  /* TMR3 enable counter */
  TMR_Cmd(TMR4, ENABLE);
}
/***************************************************************************/
//*******函数名:void TIM5Config(u16 PeriodValue2)
//*******说  明: 定时器5配置
//*******参  数:
//*******返回值:
/***************************************************************************/
void TIM5Config(u16 PeriodValue2)
{
        TMR_TimerBaseInitType  TMR_TMReBaseStructure;
        TMR_OCInitType  TMR_OCInitStructure;

  /* Compute the prescaler value */
  TMR_TMReBaseStructure.TMR_Period = PeriodValue2;
  TMR_TMReBaseStructure.TMR_DIV = 999;                        //36khz               
  TMR_TMReBaseStructure.TMR_ClockDivision = 0;
  TMR_TMReBaseStructure.TMR_CounterMode = TMR_CounterDIR_Up;

  TMR_TimeBaseInit(TMR5, &TMR_TMReBaseStructure);

  /* PWM1 Mode configuration: Channel2 */
  TMR_OCInitStructure.TMR_OCMode = TMR_OCMode_PWM2;
  TMR_OCInitStructure.TMR_OutputState = TMR_OutputState_Enable;
  TMR_OCInitStructure.TMR_Pulse = PeriodValue2/2;
  TMR_OCInitStructure.TMR_OCPolarity = TMR_OCPolarity_High;

  TMR_OC2Init(TMR5, &TMR_OCInitStructure);

  TMR_OC2PreloadConfig(TMR5, TMR_OCPreload_Enable);

  TMR_ARPreloadConfig(TMR5, ENABLE);

  /* TMR3 enable counter */
  TMR_Cmd(TMR5, ENABLE);
}
打了断点,出问题是再定时器初始化之后

使用特权

评论回复
沙发
muyichuan2012| | 2021-4-15 11:05 | 只看该作者
GPIO的配置请发一下

使用特权

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

本版积分规则

3

主题

5

帖子

0

粉丝