- void TIM1_HB_Init(u16 arr,u16 psc)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
- TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
- TIM_DeInit(TIM1);
- /**********************初始化时基结构体*************************/
- TIM_TimeBaseInitStructure.TIM_Period = arr; //指定要加载到活动的周期值
- TIM_TimeBaseInitStructure.TIM_Prescaler = psc; //指定预分频器值
- TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //指定时钟分频
- TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//指定计数器模式
- TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure); //时基结构体初始化
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //指定TIM输出模式
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //TIM输出比较状态使能
- TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;//TIM互补输出比较状态使能
- 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输出比较引脚状态
- TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; //指定空闲状态期间的互补TIM输出比较引脚状态
- TIM_OC1Init(TIM1, &TIM_OCInitStructure); //初始化OC结构体
- /**********************启用TIMx外设预载寄存器CCR1*************************/
- TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
- /**********************启用TIMx外设预载寄存器CCR1*************************/
- TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable; //使能指定在运行模式下使用的关闭状态选择
- TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable; //使能空闲状态下使用的关闭状态。
- TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF; //指定LOCK级别参数
- TIM_BDTRInitStructure.TIM_DeadTime = 0x06; //设置死区时间
- TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable; //失能TIM Break输入
- TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_Low;//指定TIM中断输入引脚极性。
- TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Disable;//失能TIM自动输出功能。
- TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
- TIM_Cmd(TIM1, ENABLE); //使能指定的TIM外设
- TIM_CCPreloadControl(TIM1,ENABLE); //使能TIM外设捕捉比较预载控制位
- TIM_CtrlPWMOutputs(TIM1, ENABLE); //使能TIM外设主输出
- }