无刷电机不能自启动,软件方面会有什么原因造成?

2019-08-23 15:08发布

如题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
29条回答
xiaobudonglaosh
2019-08-23 15:31
星丶落 发表于 2016-7-11 09:59
把那行再写上  不注释掉试试

找到问题了  是换相子函数的问题  有些PWM通道的使能和失能可能冲突

void ComHandler(void)//换相子函数
{
        TIM8->BDTR&=0<<15;//
        HALLcount++;
        if(bHallStartStep!=3&&bHallStartStep!=4)
        PWM_A=0;
        if(bHallStartStep!=0&&bHallStartStep!=5)
                PWM_B=0;
        if(bHallStartStep!=1&&bHallStartStep!=2)
                PWM_C=0;
         

        if(bHallStartStep==0)//AB
        {
//                TIM8->CCER|=1<<0;           //OC1 输出使能
//                TIM8->CCER&=0<<4;           //OC2 输出失能       
                TIM8->CCER&=0<<8;           //OC3 失能
                TIM8->CCER|=1<<0;           //OC1 输出使能
            TIM8->CCR1=led0pwmval;
                PWM_B=1;
                LED0=0;
                LED1=0;
                BEEP=0;
        }
  else if(bHallStartStep==1)        //AC
        {
//                TIM8->CCER|=1<<0;           //OC1 输出使能
//                TIM8->CCER&=0<<4;           //OC2 输出失能       
                TIM8->CCER&=0<<8;           //OC3 失能
                TIM8->CCER|=1<<0;           //OC1 输出使能
            TIM8->CCR1=led0pwmval;
                PWM_C=1;
                LED0=1;
                LED1=0;
                BEEP=0;
        }
        else if(bHallStartStep==2)        //BC
        {
                TIM8->CCER&=0<<0;           //OC1 输出失能
                TIM8->CCER|=1<<4;           //OC2 输出使能       
//                TIM8->CCER&=0<<8;           //OC3 失能
            TIM8->CCR2=led0pwmval;

                PWM_C=1;
                LED1=1;
                LED0=1;
                BEEP=0;
        }
        else if(bHallStartStep==3)        //BA
        {
                TIM8->CCER&=0<<0;           //OC1 输出失能
                TIM8->CCER|=1<<4;           //OC2 输出使能       
//                TIM8->CCER&=0<<8;           //OC3 失能
            TIM8->CCR2=led0pwmval;

                PWM_A=1;
                LED1=1;
                LED0=0;
                BEEP=0;
        }
        else if(bHallStartStep==4)//CA
        {
                TIM8->CCER&=0<<0;           //OC1 输出失能
//                TIM8->CCER&=0<<4;           //OC2 失能       
                TIM8->CCER|=1<<8;                //OC3 使
                TIM8->CCR3=led0pwmval;

                PWM_A=1;
//                BEEP=1;
                LED0=0;
                LED1=1;
               
        }
        else if(bHallStartStep==5)        //CB
        {
                TIM8->CCER&=0<<0;           //OC1 输出失能
//                TIM8->CCER&=0<<4;           //OC2 失能       
                TIM8->CCER|=1<<8;           //OC3 使能
        TIM8->CCR3=led0pwmval;

                PWM_B=1;
                LED0=1;
//                BEEP=1;
                LED1=0;
        }       
  TIM8->BDTR|=0x8000; //允许PWM输出
}

一周热门 更多>