/**********************************
APB2 ==> 84MHZ	==>APB2 timer clock = 84*2 = 168MHz		TIM1
APB1 ==> 42MHZ	==>APB1 timer clock = 42*2 = 84MHz		D

LED1 ==> PB15  ==> TIM12_CH2
LED2 ==> PB14  ==> TIM12_CH1

Servo ==> PB3 ==> TIM4_CH2

Fan PB13 ==> TIM1_CH1N 

***********************************/
#include "pwm.h"

TIM_HandleTypeDef h_tim3;		//T30爆闪


TIM_OC_InitTypeDef s_ConfigOC;




//led的pwm初始化函数
void PWM_Init(void)
{
	//爆闪配置
	h_tim3.Instance = TIM3;
	h_tim3.Init.Prescaler = 1;
	h_tim3.Init.Period = 49;
	h_tim3.Init.CounterMode = TIM_COUNTERMODE_UP;
	h_tim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
	h_tim3.Channel = HAL_TIM_ACTIVE_CHANNEL_1;
	HAL_TIM_PWM_Init(&h_tim3);
	
	s_ConfigOC.OCMode = TIM_OCMODE_PWM1;
	s_ConfigOC.Pulse = 0;
	s_ConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;			
	
	//爆闪通道配置
	HAL_TIM_PWM_ConfigChannel(&h_tim3, &s_ConfigOC, TIM_CHANNEL_1);

	HAL_TIM_PWM_Start(&h_tim3,TIM_CHANNEL_1);

	__HAL_TIM_SetCompare(&h_tim3,TIM_CHANNEL_1,0);
}

void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* htim)
{
	GPIO_InitTypeDef GPIO_InitStruct;
	if(htim->Instance==TIM3)
	{
		__HAL_RCC_GPIOA_CLK_ENABLE();
		__HAL_RCC_TIM3_CLK_ENABLE();
		
		GPIO_InitStruct.Pin = GPIO_PIN_6;
		GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
		GPIO_InitStruct.Pull = GPIO_PULLUP;
		GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
		GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
				
		HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
	}
	
}



void Set_Laser_Value(uint16_t value)
{
	__HAL_TIM_SetCompare(&h_tim3,TIM_CHANNEL_1,value);
}


void Is_Laser_Enable(uint8_t val)
{
	if(val==1)
		Set_Laser_Value(0);
	else if(val==0)
		Set_Laser_Value(300);
	
	return;
		
}