• 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输出


  • 相关阅读:
    amfphp1.9 class mapping初探
    C#程序打包.exe应用程序
    数据库备份方案
    ListView 控件使用
    在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库
    .NET
    转载:MATLAB 符号函数作图
    整理雷达相关
    Python 程序 运行过程
    struts2 文件上传显示进度条
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3215026.html
Copyright © 2020-2023  润新知