OpenEdv-开源电子网

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

使用高级定时器时,目的是输出PWM波形,互补的波形输出不了,求高人指点

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
30
金钱
30
注册时间
2015-1-2
在线时间
0 小时
发表于 2015-10-21 13:57:23 | 显示全部楼层 |阅读模式
5金钱
void TIM1_PWM_Init(u16 arr,u16 psc)  

 {  
      u16 CCR1_Val=8400;  //?è??TIM1?¨??1????????±?50%  

    u16 CCR2_Val=8400;   //?è??TIM1?¨??1????????±?25%  

   //u16 CCR3_Val=450;   //?è??TIM1?¨??1????????±?12.5% 

GPIO_InitTypeDef GPIO_InitStructure;  
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  
TIM_OCInitTypeDef  TIM_OCInitStructure;  
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;  

  
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);                            //?????¨?±?÷3?±??                                                    
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOB,ENABLE); //????GPIO??·????????±??  




GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;  //PWM??????PA8,9,10                                                    
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; 
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  
GPIO_Init(GPIOE,&GPIO_InitStructure);                               //??????GPIO  

  /*PB8 CH1n*/

//GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14;
//GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
//GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
//GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
//GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
//GPIO_Init(GPIOB,&GPIO_InitStructure);



GPIO_PinAFConfig(GPIOE,GPIO_PinSource8,GPIO_AF_TIM1);  //???????????????????±??                                                         
GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_TIM1);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource10,GPIO_AF_TIM1);//PE9
GPIO_PinAFConfig(GPIOE,GPIO_PinSource11,GPIO_AF_TIM1);//PE8
//GPIO_PinAFConfig(GPIOB,GPIO_PinSource13,GPIO_AF_TIM1);
//GPIO_PinAFConfig(GPIOB,GPIO_PinSource14,GPIO_AF_TIM1);
                                                               //???????¨?±?÷ TIM1 
TIM_TimeBaseStructure.TIM_Period = arr;                             //?è????×?????×°????????  
TIM_TimeBaseStructure.TIM_Prescaler =psc;                           //?è???¤·?????  
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;                        //?è???±??·???:TDTS = Tck_tim  
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;         //TIM ?ò?????????? 
TIM_TimeBaseStructure.TIM_RepetitionCounter=0;                      //?????????÷??????×????ü??pwm????±?  
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);                       

   

 //pwm????????,TIM_OCInitStructure??????????
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;                     //?è????pwm2????????   
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;         //???????¨??????//±??????????? 
TIM_OCInitStructure.TIM_OutputNState=TIM_OutputNState_Disable;       //??????????????  

 //????????????(????pulse)???????¨?±?÷???á???????¨???¨?±?÷????????  
  TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;              //?è??????????//???????????????????????§???????? 
  TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_High;             //?è????????????????//???????????????????????§????????  
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
  
 //?è???¨??1????±????????÷????????-????±???50%  

     TIM_OCInitStructure.TIM_Pulse=CCR1_Val;  

     TIM_OC1Init(TIM1,&TIM_OCInitStructure);                             //?è???¨??1  

 //?è???¨??2????±????????÷????????-????±???25%  

    TIM_OCInitStructure.TIM_Pulse=CCR2_Val;  

   TIM_OC2Init(TIM1,&TIM_OCInitStructure);  

 //?è???¨??3????±????????÷????????-????±???12.5%  

    //TIM_OCInitStructure.TIM_Pulse=CCR3_Val;  

   // TIM_OC3Init(TIM1,&TIM_OCInitStructure);  

 //?????????????????????????¨?±?÷?????????¨???¨?±?÷????????TIM_BDTRInitStructure????????????  

TIM_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_Enable;          //??????????????????//???????????°??±?×????±????  

TIM_BDTRInitStructure.TIM_OSSIState=TIM_OSSIState_Enable;          //??????????????????//??±????????°??±?×????±????  

TIM_BDTRInitStructure.TIM_LOCKLevel=TIM_LOCKLevel_OFF;              //???¨?è??  //???¨??±?  

TIM_BDTRInitStructure.TIM_DeadTime=0x05;  //69ns                          //?????±???è??  
TIM_BDTRInitStructure.TIM_Break=TIM_Break_Disable;                      //????????????  
TIM_BDTRInitStructure.TIM_BreakPolarity=TIM_BreakPolarity_High;         //???????????? //?????????????????§      
TIM_BDTRInitStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_Enable;   //×???????????  
TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);          

     //?????????ò??  

        TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);        //????TIMx??CCR1?????¤×°???????÷?  
TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);

        TIM_ARRPreloadConfig(TIM1,ENABLE);                      //????TIMx??ARR?????¤×°???????÷?  

        TIM_Cmd(TIM1,ENABLE);                               //?ò??TIM2?  

   //???????????????¨?±?÷????????????pwm±????ò???  
        TIM_CtrlPWMOutputs(TIM1,ENABLE);                        //pwm?????????????¨???????ò??  
}

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-10-21 21:29:57 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 12:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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