OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2958|回复: 2

STM32F407,TIM1,配置PWM互补输出,CH1,CH2,CH3输出正常,CH1N,CH2N,CH3N输出一直为低电平

[复制链接]

6

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2015-11-22
在线时间
4 小时
发表于 2020-10-12 15:23:58 | 显示全部楼层 |阅读模式
5金钱
问题:STM32F407,TIM1,配置PWM互补输出,CH1,CH2,CH3输出正常,CH1N,CH2N,CH3N输出一直为低电平。
代码如下,麻烦大家帮忙看下原因,谢谢!
void TIM1_PWM_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
//timer1
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource8 | GPIO_PinSource9, GPIO_AF_TIM1);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource10 | GPIO_PinSource11, GPIO_AF_TIM1);
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource12 | GPIO_PinSource13, GPIO_AF_TIM1);

  //TIM1_CH1N,TIM1_CH1,TIM1_CH2N,TIM1_CH2,TIM1_CH3N,TIM1_CH3,
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  
  GPIO_Init(GPIOE,&GPIO_InitStructure);

  TIM_TimeBaseStructure.TIM_Period = 3750 - 1;
  TIM_TimeBaseStructure.TIM_Prescaler = 2;
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  
//
  TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_Pulse = 0;//1875;//0;//20000;
  TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;  
  TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Reset;
  
  TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_High;
  TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;
  
  TIM_OC1Init(TIM1,&TIM_OCInitStructure);
  TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
  TIM_OC2Init(TIM1,&TIM_OCInitStructure);
  TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);
  TIM_OC3Init(TIM1,&TIM_OCInitStructure);  
  TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);
  TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
  TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;
  TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_High;
  TIM_BDTRInitStructure.TIM_DeadTime = 0x90;
  TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
  TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Disable;
  TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Disable;
  TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);

  TIM_ARRPreloadConfig(TIM1, ENABLE);
  TIM_Cmd(TIM1, ENABLE);
  
  TIM_CtrlPWMOutputs(TIM1, ENABLE);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2015-11-22
在线时间
4 小时
 楼主| 发表于 2020-10-12 15:35:37 | 显示全部楼层
哈哈,每次刚发完贴就可以解决,我知道原因了,
  GPIO_PinAFConfig(GPIOE, GPIO_PinSource8 | GPIO_PinSource9, GPIO_AF_TIM1);
   GPIO_PinAFConfig(GPIOE, GPIO_PinSource10 | GPIO_PinSource11, GPIO_AF_TIM1);
   GPIO_PinAFConfig(GPIOE, GPIO_PinSource12 | GPIO_PinSource13, GPIO_AF_TIM1);
这里的写法是错误的,
正确写法:
        //timer1
         GPIO_PinAFConfig(GPIOE, GPIO_PinSource8, GPIO_AF_TIM1);
         GPIO_PinAFConfig(GPIOE, GPIO_PinSource9, GPIO_AF_TIM1);
         GPIO_PinAFConfig(GPIOE, GPIO_PinSource10, GPIO_AF_TIM1);
         GPIO_PinAFConfig(GPIOE, GPIO_PinSource11, GPIO_AF_TIM1);
         GPIO_PinAFConfig(GPIOE, GPIO_PinSource12, GPIO_AF_TIM1);
         GPIO_PinAFConfig(GPIOE, GPIO_PinSource13, GPIO_AF_TIM1);
代码是直接可以用的,分享给大家了。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2021-2-28
在线时间
10 小时
发表于 2024-7-27 05:57:35 | 显示全部楼层
感谢,代码可用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表