STM32F1高级定时器输出互补的PWM

  1. void TIM1_HB_Init(u16 arr,u16 psc)
  2. {
  3.     GPIO_InitTypeDef         GPIO_InitStructure;
  4.     TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
  5.     TIM_OCInitTypeDef       TIM_OCInitStructure;
  6.     TIM_BDTRInitTypeDef      TIM_BDTRInitStructure;
  7.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,ENABLE);  
  8.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  9.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
  10.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  11.     GPIO_Init(GPIOA,&GPIO_InitStructure);
  12.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
  13.     GPIO_Init(GPIOB,&GPIO_InitStructure);
  14.     TIM_DeInit(TIM1);
  15.     
  16.     /**********************初始化时基结构体*************************/  
  17.     
  18.     TIM_TimeBaseInitStructure.TIM_Period = arr;                    //指定要加载到活动的周期值        
  19.     TIM_TimeBaseInitStructure.TIM_Prescaler = psc;                 //指定预分频器值
  20.     TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;    //指定时钟分频
  21.     TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//指定计数器模式
  22.     
  23.     TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);                //时基结构体初始化
  24.     
  25.     
  26.     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;               //指定TIM输出模式
  27.     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  //TIM输出比较状态使能
  28.     TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;//TIM互补输出比较状态使能
  29.     TIM_OCInitStructure.TIM_Pulse = 0;                                //指定要加载到捕获比较寄存器中的脉冲值
  30.     TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;        //指定主通道输出极性
  31.     TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;        //指定互补通道输出极性
  32.     TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;    //指定空闲状态期间的TIM输出比较引脚状态
  33.     TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;    //指定空闲状态期间的互补TIM输出比较引脚状态
  34.     TIM_OC1Init(TIM1, &TIM_OCInitStructure);                        //初始化OC结构体
  35.     
  36.     /**********************启用TIMx外设预载寄存器CCR1*************************/  
  37.     TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
  38.     /**********************启用TIMx外设预载寄存器CCR1*************************/  
  39.     TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;        //使能指定在运行模式下使用的关闭状态选择
  40.     TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;        //使能空闲状态下使用的关闭状态。
  41.     TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;        //指定LOCK级别参数
  42.     TIM_BDTRInitStructure.TIM_DeadTime = 0x06;                        //设置死区时间
  43.     TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;            //失能TIM Break输入   
  44.     TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_Low;//指定TIM中断输入引脚极性。
  45.     TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Disable;//失能TIM自动输出功能。
  46.     TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
  47.     TIM_Cmd(TIM1, ENABLE);                                            //使能指定的TIM外设
  48.     TIM_CCPreloadControl(TIM1,ENABLE);                                //使能TIM外设捕捉比较预载控制位
  49.     TIM_CtrlPWMOutputs(TIM1, ENABLE);                                //使能TIM外设主输出
  50. }

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值