zoukankan      html  css  js  c++  java
  • STM32F103 TIM1输出PWM设置

    //TIM1 分频
    #define	TIM1_DIV1	  (1-1)
    #define	TIM1_DIV2	  (2-1)
    #define	TIM1_DIV4	  (4-1)
    #define	TIM1_DIV8	  (8-1)
    #define	TIM1_DIV9	  (9-1)
    #define	TIM1_DIV18	  (18-1)
    #define	TIM1_DIV72	  (72-1)
    
    
    #define		TIM1PinA_Enb  	 	TIM1->CCER |= 0X0001 //比较通道1输出到IO
    #define		TIM1PinB_Enb 	 	TIM1->CCER |= 0X0010 //比较通道2输出到IO
    #define		TIM1PinC_Enb  		TIM1->CCER |= 0X0100 //比较通道3输出到IO
    #define		TIM1PinA_Dis   		TIM1->CCER &= ~0X0001 //比较通道1禁止输出到IO
    #define		TIM1PinB_Dis  		TIM1->CCER &= ~0X0010 //比较通道2禁止输出到IO
    #define		TIM1PinC_Dis  		TIM1->CCER &= ~0X0100 //比较通道3禁止输出到IO
    
    
    #define		VT_PWM				1000 //PWM 计数最大值 频率8K
    //#define		VT_PWM				500 //PWM 计数最大值 频率16K
    
    //*************************************
    // 函数名称:TIM1_PWMMode_Init
    // 函数功能:TIM1 作PWM模式初始化	用作比较输出用
    // 入口参数:计数个数 分频数
    // 出口参数:无
    // 返回值  :无
    // 此设置适合用作BLDC驱动控制中驱动三对MOS
    //***************************************
    void TIM1_PWMMode_Init(int16_t Tcon,uint16_t psc)
    {
    
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
        TIM_DeInit(TIM1);            //复位定时器
    
    	TIM1->ARR = Tcon ;	 //定时器重装载值
     	TIM1->PSC = psc ;	//时钟预分频系数
     	TIM1->CR1 &= ~(1<<4) ; //向上计数
    
       	TIM1->CR1 |= (1<<7);  //使能自动重装载
    			 
    //清除更新中断  比较1234中断标志
    	TIM1->SR &= ~0X001F ; 
    
     //	通道1 2 3 配置为PWM1模式
    	TIM1->CCMR1 = 0X6868 ; //
    	TIM1->CCMR2 = 0X0068 ;
    // 不使能比较通道1 2 3输出到IO 且1电平为有效电平
    	TIM1->CCER  = 0X0000 ;
    //
    	TIM1->CCR1 = 0 ;
    	TIM1->CCR2 = 0 ;
    	TIM1->CCR3 = 0 ;
    	TIM1->CCR4 = 0 ;
    	//	关更新中断 比较1-4中断
     	TIM1->DIER &= ~0X001F ;	
    //	TIM1->DIER |= 0X0002 ;	 //开比较1 中断
    
        TIM1->BDTR |= (1<<15) ;	//主输出使能   !!!
    //清除更新事件标记位 并初始化所有寄存器
    	TIM1->EGR &= ~0X0001 ; 
    			 
        TIM1->CR1 |= 0X0001 ;            //开启时钟
    
    }
    
    //*************************************
    // 函数名称:ToPWM_Value
    // 函数功能:设置PWM占空比
    // 入口参数:计数个数 分频数
    // 出口参数:无
    // 返回值  :无
    //***************************************/
    void ToPWM_Value(uint16_t InValue)
    {
    	TIM1->CCR1 = InValue ;
    	TIM1->CCR2 = InValue ;
    	TIM1->CCR3 = InValue ;	
    }
    
    //*************************************
    // 函数名称:BLDC_RUN_ONESTEP
    // 函数功能:电机六步走向
    // 入口参数:电机运行的当前步
    // 出口参数:无
    //***************************************/
    void BLDC_RUN_ONESTEP(uint32_t STEP)
    {
    	switch(STEP)
    	{
    		case 1 : // AB
    			TIM1PinB_Dis ;
    			TIM1PinC_Dis ;
    			TIM1PinA_Enb ;
    			UdePinA_Off ;
    			UdePinC_Off ;
    			UdePinB_On ;			
    			break ;
    		case 2 :	//AC
    			TIM1PinB_Dis ;
    			TIM1PinC_Dis ;
    			TIM1PinA_Enb ;
    			UdePinA_Off ;
    			UdePinB_Off ;
    			UdePinC_On ;					
    			break ;
    		case 3 : //BC	
    			TIM1PinA_Dis ;
    			TIM1PinC_Dis ;
    			TIM1PinB_Enb ;
    			UdePinA_Off ;
    			UdePinB_Off ;
    			UdePinC_On ;								
    			break ;
    		case 4 ://BA	
    			TIM1PinA_Dis ;
    			TIM1PinC_Dis ;
    			TIM1PinB_Enb ;
    			UdePinB_Off ;
    			UdePinC_Off ;
    			UdePinA_On ;				
    			break ;
    		case 5 ://CA	
    			TIM1PinA_Dis ;
    			TIM1PinB_Dis ;
    			TIM1PinC_Enb ;
    			UdePinB_Off ;
    			UdePinC_Off ;
    			UdePinA_On ;
    			break ;
    		case 6 :	//CB	
    			TIM1PinA_Dis ;
    			TIM1PinB_Dis ;
    			TIM1PinC_Enb ;
    			UdePinA_Off ;
    			UdePinC_Off ;
    			UdePinB_On ;		
    							
    			break ;		
    		default : 	
    
    			break ;
    	}			
    }
    
    //----实例应用------
    	 //72M/(9) = 8M  pwm周期=(1/8)*1000=125U 
    	TIM1_PWMMode_Init(VT_PWM,TIM1_DIV9) ;  //PWM 频率设置初始化 频率F=8K
    
    	
    //	ToPWM_Value(500) ; //设置三相驱动的PWM占空比 500/1000 = 50%
    //	TIM1PinA_Enb ; //PWM输出到IO 此时可在IO上看到有PWM信号输出


     

  • 相关阅读:
    Fiddler显示响应时间
    WPF RichTextBox
    设计模式摘要
    sqlite insert时一直报constraint 约束
    try catch使用规则
    关于WPF的2000件事 06--WPF布局
    SmartAssembly 汉化说明
    GP80系列打印机驱动 V17下载地址
    记录 java 安卓 各类引用包报错处理方法 例如 android.support.v4.app.+ ,io.reactivex.+
    第一讲 新手如何学习HTTP协议之实践项目多开微信机器人
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3243692.html
Copyright © 2011-2022 走看看