STM8S TIM1 PWM初始化设置

#define		TIM1_DIV1			(uint16)(1-1)
#define		TIM1_DIV2			(uint16)(2-1)
#define		TIM1_DIV4			(uint16)(4-1)
#define		TIM1_DIV8			(uint16)(8-1)
#define		TIM1_DIV16			(uint16)(16-1)
#define		TIM1_DIV32			(uint16)(32-1)

//timer1 PWM 输出到管脚使能
 _Bool   PWMAOUT_PINENBLE  @TIM1_CCER1:0 ;//TIM1_CH1 -- PC6
 _Bool   PWMBOUT_PINENBLE  @TIM1_CCER1:4 ;//TIM1_CH2 -- PC7
 _Bool   PWMCOUT_PINENBLE  @TIM1_CCER2:0 ;//TIM1_CH3 -- PC3

// PWM 频率设定
#define	V_PWMFRE  1000

#define ToCMPxH(CMP,Value) (CMP = (uint8)((Value >> 8 ) & 0xFF))
#define ToCMPxL(CMP,Value) (CMP = (uint8)(Value & 0xFF))


//*************************************
// 函数名称:Init_Timer1_PWM
// 函数功能:定时器1作PWM输出时初始化
// 入口参数:PWM等级 每级0.625U (1000*0.625 = 62.5U = 8K)
// 出口参数:无
// 此初始化设置应用在BLDC 三相PWM输出
//***************************************
void Init_Timer1_PWM(uint16 Tcon,uint16 Pscr)
{	

		//16M系统时钟经预分频f=fck/(PSCR+1)  

		TIM1_PSCRH = (Pscr >> 8) & 0xff ;  
		TIM1_PSCRL = Pscr & 0xff ; 
		
		//设定重装载时的寄存器值,255是最大值			
		TIM1_ARRH = (Tcon >> 8) & 0xff ;
		TIM1_ARRL = Tcon & 0xff ;
		
		//设置刹车寄存器 		
		TIM1_BKR|=0X80 ;   
		
		//PWM1模式,TIM1_CNT<TIM1_CCR1时有效		
		TIM1_CCMR1 =0x6C ; 
		//PWM1模式,TIM1_CNT<TIM1_CCR1时有效		
		TIM1_CCMR2 =0x6C ; 
		//PWM1模式,TIM1_CNT<TIM1_CCR1时有效		
		TIM1_CCMR3 =0x6C ; 
		//冻结模式,TIM1_CNT<TIM1_CCR1时有效		
		TIM1_CCMR4 =0x08 ; 
		
		 //PWM 占空比 清0
		TIM1_CCR1H = 0;
		TIM1_CCR1L = 0;
		TIM1_CCR2H = 0;
		TIM1_CCR2L = 0;
		TIM1_CCR3H = 0;
		TIM1_CCR3L = 0;
		
		TIM1_EGR = 0X01 ; //UG = 1 ;初始化计数器 预装载载入影子寄存器中
		TIM1_CNTRH = 0 ;  //计数器清0
		TIM1_CNTRL = 0 ;
		TIM1_CR1 |= 0X01;  // 计数器使能,开始计数 	
				
}
//*************************************
// 函数名称:TOPWMVALUE
// 函数功能:设置PWM占空比
// 入口参数:占空比值
// 出口参数:无
//***************************************
void TOPWMVALUE(uint16 OUT_PWM)
{	
		ToCMPxH(TIM1_CCR1H,OUT_PWM);
		ToCMPxL(TIM1_CCR1L,OUT_PWM);
		ToCMPxH(TIM1_CCR2H,OUT_PWM);
		ToCMPxL(TIM1_CCR2L,OUT_PWM);
		ToCMPxH(TIM1_CCR3H,OUT_PWM);
		ToCMPxL(TIM1_CCR3L,OUT_PWM);
}


//----实例应用------
		//定时器1初始化 
		Init_Timer1_PWM(V_PWMFRE,TIM1_DIV2) ;//16M/2=8M   设置8K PWM输出


你可能感兴趣的:(初始化)