OpenEdv-开源电子网

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

STM32F407ZGT6 TIM8 CH2/3 PWM 互补不输出

[复制链接]

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
发表于 2019-8-19 11:29:02 | 显示全部楼层 |阅读模式
下面是程序
TIM8定时器好像是工作了,但,PWM无输出
void IO_Configuration(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;


        GPIO_InitStructure.GPIO_Pin = GPIO_PinSource0|GPIO_PinSource1;        
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;               
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;               
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;   
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;               
        GPIO_Init(GPIOB,&GPIO_InitStructure);                       
       
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource7|GPIO_PinSource8,GPIO_AF_TIM8);
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource0|GPIO_PinSource1,GPIO_AF_TIM8);
}



void TIM_Configuration(void)
{

  TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;
  TIM_DeInit(TIM8);
  TIM_TimeBaseStruct.TIM_Period                      = 7000;                       
  TIM_TimeBaseStruct.TIM_Prescaler            = 0;                                        
  TIM_TimeBaseStruct.TIM_ClockDivision        = TIM_CKD_DIV1;   
  TIM_TimeBaseStruct.TIM_CounterMode       = TIM_CounterMode_Up;   
  TIM_TimeBaseStruct.TIM_RepetitionCounter  = 0;               
  TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStruct);     
}

void PWM_Configuration(void)
{
        TIM_OCInitTypeDef        TIM_OCInitStructure;                           
        TIM_BDTRInitTypeDef      TIM8_BDTRInitStruct;                           
       
        TIM_OCInitStructure.TIM_OCMode                  = TIM_OCMode_PWM1;                                                       
        TIM_OCInitStructure.TIM_OutputState             = TIM_OutputState_Enable;                        
        TIM_OCInitStructure.TIM_OutputNState           = TIM_OutputNState_Enable;                       
        TIM_OCInitStructure.TIM_Pulse                        = 0;                                                                                          
        TIM_OCInitStructure.TIM_OCPolarity                   = TIM_OCPolarity_High;                         
        TIM_OCInitStructure.TIM_OCNPolarity                  = TIM_OCNPolarity_High;                               
        TIM_OCInitStructure.TIM_OCIdleState                  = TIM_OCIdleState_Reset;                               
        TIM_OCInitStructure.TIM_OCNIdleState                 = TIM_OCIdleState_Reset;                       
        TIM_OC2Init(TIM8, &TIM_OCInitStructure);                              
       
        TIM_OCInitStructure.TIM_OCMode                  = TIM_OCMode_PWM1;                       
        TIM_OCInitStructure.TIM_OutputState             = TIM_OutputState_Enable;                        
        TIM_OCInitStructure.TIM_OutputNState           = TIM_OutputNState_Enable;                       
        TIM_OCInitStructure.TIM_Pulse                        = 0;                                                                          
        TIM_OCInitStructure.TIM_OCPolarity                   = TIM_OCPolarity_High;                                 
        TIM_OCInitStructure.TIM_OCNPolarity                  = TIM_OCNPolarity_High;                                       
        TIM_OCInitStructure.TIM_OCIdleState                  = TIM_OCIdleState_Reset;                               
        TIM_OCInitStructure.TIM_OCNIdleState                 = TIM_OCIdleState_Reset;                               
        TIM_OC3Init(TIM8, &TIM_OCInitStructure);                              
       
        TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable);                       
        TIM_OC3PreloadConfig(TIM8, TIM_OCPreload_Enable);                     
       
        TIM8_BDTRInitStruct.TIM_OSSRState                         = TIM_OSSRState_Enable;         
        TIM8_BDTRInitStruct.TIM_OSSIState                         = TIM_OSSIState_Enable;        
        TIM8_BDTRInitStruct.TIM_LOCKLevel                         = TIM_LOCKLevel_OFF;      
        TIM8_BDTRInitStruct.TIM_DeadTime                          = 0x10;                                       
        TIM8_BDTRInitStruct.TIM_Break                             = TIM_Break_Disable;         
        TIM8_BDTRInitStruct.TIM_BreakPolarity         = TIM_BreakPolarity_High;        
        TIM8_BDTRInitStruct.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;  
        TIM_BDTRConfig(TIM8, &TIM8_BDTRInitStruct);                                       
       
        TIM_ARRPreloadConfig(TIM8, ENABLE);                                   
        TIM_ClearITPendingBit(TIM8,TIM_IT_Update);
        TIM_ITConfig(TIM8,TIM_IT_Update,ENABLE);
        TIM_CtrlPWMOutputs(TIM8, ENABLE);                                                                                                                                        
       
        TIM_CCxCmd(TIM8,TIM_Channel_2,TIM_CCx_Enable);
        TIM_CCxNCmd(TIM8,TIM_Channel_2,TIM_CCxN_Enable);
        TIM_CCxCmd(TIM8,TIM_Channel_3,TIM_CCx_Enable);
        TIM_CCxNCmd(TIM8,TIM_Channel_3,TIM_CCxN_Enable);
}

       

TIM8

TIM8

PB0/PB1无输出

PB0/PB1无输出

PC7/PC8无输出

PC7/PC8无输出
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
 楼主| 发表于 2019-8-19 11:30:47 | 显示全部楼层
希望大家帮忙分析一下,是怎么回事呢?
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
 楼主| 发表于 2019-8-19 11:48:05 | 显示全部楼层
本帖最后由 xianglongjudz 于 2019-8-19 11:52 编辑

顶一下,别再沉了
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
 楼主| 发表于 2019-8-19 11:51:44 | 显示全部楼层
检查了,没有发现,PB0/1 PC7/8有被其它程序IO重复定义的!
回复 支持 反对

使用道具 举报

4

主题

178

帖子

0

精华

高级会员

Rank: 4

积分
668
金钱
668
注册时间
2019-7-28
在线时间
60 小时
发表于 2019-8-19 13:12:12 | 显示全部楼层
怎么没看见输出ENABLE  !!!
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
 楼主| 发表于 2019-8-19 14:17:25 | 显示全部楼层
glenxu 发表于 2019-8-19 13:12
怎么没看见输出ENABLE  !!!

void RCC_Configuration(void)
{
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//ê1ÄüPAê±Öó
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ê1ÄüPBê±Öó  
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//ê1ÄüPCê±Öó
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);//ê1ÄüPDê±Öó  
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//ê1ÄüPEê±Öó  
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//ê1ÄüPFê±Öó
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);//ê1ÄüPGê±Öó  
        RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC , ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4 , ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5 , ENABLE);
        //RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7 , ENABLE);//
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8 , ENABLE);//
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM12, ENABLE);//
}


在主程序里调用
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
 楼主| 发表于 2019-8-19 14:19:51 | 显示全部楼层
glenxu 发表于 2019-8-19 13:12
怎么没看见输出ENABLE  !!!

您指的输出使能是指定时器吗?
if(aa==1){TIM_Cmd(TIM8,DISABLE);}else{TIM_Cmd(TIM8,ENABLE);}
回复 支持 反对

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10567
金钱
10567
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-8-19 15:36:12 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
 楼主| 发表于 2019-8-20 00:47:46 | 显示全部楼层
peng1554 发表于 2019-8-19 15:36
http://www.openedv.com/forum.php?mod=viewthread&tid=295335
看能参考不

看了,试了,和我上面的程 序对比,更改,直接改用上面的程序,还是没有PWM互补输出
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
 楼主| 发表于 2019-8-20 00:49:34 | 显示全部楼层
peng1554 发表于 2019-8-19 15:36
http://www.openedv.com/forum.php?mod=viewthread&tid=295335
看能参考不

刹车功能关闭 了!
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
 楼主| 发表于 2019-8-20 10:36:56 | 显示全部楼层
顶啊顶啊
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
 楼主| 发表于 2019-8-20 18:14:33 | 显示全部楼层
TIM8   IO口,正常,未损坏!
回复 支持 反对

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2019-5-28
在线时间
14 小时
 楼主| 发表于 2019-8-20 21:34:36 | 显示全部楼层
正式宣部,此贴沉入大海!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-16 03:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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