OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2714|回复: 2

求高手指点一下直流无刷电机控制程序

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2016-1-20
在线时间
5 小时
发表于 2016-1-20 19:59:57 | 显示全部楼层 |阅读模式
1金钱
[mw_shl_code=c,true]void TIM1_Configuration(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        TIM_OCInitTypeDef TIM_OCInitStructure;
        TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
        
        Pwm_period_num = 7200 - 1;
        //Pwm_period_num = 4096 - 1;                        //2ο¼stim32f10x_stdperiph_example_6steps
        
        /*-----------------------Clock and GPIOConfiguration------------------------------*/
#ifdef GPIO_TIM1_CHx_REMAP        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);
        GPIO_PinRemapConfig(GPIO_FullRemap_TIM1, ENABLE);    //TIM1íêè«ÖØó3éä
        
        /*------------------------TIM_CHx Configruation------------------------*/        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_11 | GPIO_Pin_13;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOE, &GPIO_InitStructure);
        
        /*------------------------TIM_CHxN Configruation------------------------*/        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOE, &GPIO_InitStructure);

  /*------------------------BKIN Configruation----------------------------*/
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;                    
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOE, &GPIO_InitStructure);
        
#else
        /*****************************************************************************
        **PA82»DèòaÖØó3éäÖ±½ó×÷ÎaTIM1_CH1μÄòy½Å,óéóúPA9¡¢PA10òѾ-±»UART1ê1óã¬1ê¶ø2»Äü
        **×÷ÎaTIM1_CH2¡¢TIM1_CH3òy½Åà′ê1óã¬′Ë′|óÃóú2aêÔTIM1_PWM1ÅäÖÃêÇ·ñÕyè·¡£
        *******************************************************************************/
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOA, ENABLE);
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
#endif
        
        /*------------------------TIM_Counter Configruation------------------------*/
        TIM_TimeBaseStructure.TIM_Period = Pwm_period_num;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseStructure.TIM_Prescaler = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CKD_DIV1;
        TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
        TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
        
        /*------------------------PWM Configruation---------------------------------*/
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
//        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;        //2ο¼stim32f10x_stdperiph_example_6steps        
        /*-----------èç1ûTIM_OutputStateûóDê1ÄüPWM2»ÄüÕy3£êä3&#246WMDÅoÅ---------------*/
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Disable;    //±è½Ïêä3öê1Äü
        TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable; //ê1Äü»¥21¶Ëêä3ö
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;        //êä3ö¼«DÔ:TIMêä3ö±è½Ï¼«DÔ¸ß
        TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;      //»¥21¶Ëêä3ö¼«DÔ
        TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;       //ËàÇøoóêä3ö×′ì¬
        TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;    //ËàÇøoó»¥21¶Ëêä3ö×′ì¬
//        TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;        
        
        TIM_OCInitStructure.TIM_Pulse = 360 - 1;                            //éèÖÃÕ¼¿Õ±èê±¼ä
        TIM_OCInitStructure.TIM_Pulse = 360 - 1;
        TIM_OCInitStructure.TIM_Pulse = 360 - 1;
        
        TIM_OC1Init(TIM1, &TIM_OCInitStructure);
        TIM_OC2Init(TIM1, &TIM_OCInitStructure);
        TIM_OC3Init(TIM1, &TIM_OCInitStructure);        
        

        /*------------------------DeadTime and Break Configruation---------------------*/        
        TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;    //ÔËDDÄ£ê½ÏÂêä3öÑ¡Ôñ
        TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;    //¿ÕÏDÄ£ê½ÏÂêä3öÑ¡Ôñ
        TIM_BDTRInitStructure.TIM_LOCKLevel= TIM_LOCKLevel_OFF;        //Ëø¶¨éèÖÃ
        TIM_BDTRInitStructure.TIM_DeadTime = 0x78;                     //ËàÇøê±¼ä

        TIM_BDTRInitStructure.TIM_Break = TIM_Break_Enable;                             //2ο¼stim32f10x_stdperiph_example_6steps         
        TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_Low;   //é23μêäè뼫DÔ

        TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Disable; //×Ô¶ˉêä3öê1Äü
        TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
        
        
        
        TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Trigger);
        TIM_SelectInputTrigger(TIM1, TIM_TS_ITR2);
        TIM_GenerateEvent(TIM1, TIM_EventSource_COM);
        
        
        TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
        TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);
        TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);
        TIM_ARRPreloadConfig(TIM1, ENABLE);      
        TIM_ITConfig(TIM1,TIM_IT_Break|TIM_IT_COM|TIM_IT_Update|TIM_IT_CC1|TIM_IT_CC2|TIM_IT_CC3, ENABLE);
        
        
        TIM_Cmd(TIM1, ENABLE);
        TIM_CtrlPWMOutputs(TIM1, ENABLE);
}

/********************************************

**********************************************/
void BLDC_Hall_Convert(u16 step)
{
        printf("step is %d\r\n", step);
        switch(step)
        {
                /*----CH1-PWM CH1N-High CH2-High CH2N-Low CH3-Low CH3N-Low----*/
                case 1:                       
                        TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);      
                        TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
                        
                  TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
                        TIM_ForcedOC2Config(TIM1,TIM_ForcedAction_Active);
               
                        TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
                        TIM_ForcedOC3Config(TIM1,TIM_ForcedAction_InActive);


                        break;
                /*----CH1-PWM CH1N-High CH2-Low CH2N-Low CH3-High CH3N-Low----*/
                case 2:
                        TIM_SelectOCxM(TIM1, TIM_Channel_1, TIM_OCMode_PWM1);      
                        TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
                        
                  TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
                        TIM_ForcedOC2Config(TIM1,TIM_ForcedAction_InActive);
               
                        TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Enable);
                        TIM_ForcedOC3Config(TIM1,TIM_ForcedAction_Active);

        
                        break;
                /*----CH1-Low CH1N-Low CH2-PWM CH2N-High CH3-High CH3N-Low----*/               
                case 3:      
                        TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
                        TIM_ForcedOC1Config(TIM1,TIM_ForcedAction_InActive);        
               
                  TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_OCMode_PWM1);
                  TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
               
                        TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Enable);
                        TIM_ForcedOC3Config(TIM1,TIM_ForcedAction_Active);

                        break;
                /*----CH1-High CH1N-Low CH2-PWM CH2N-High CH3-Low CH3N-Low----*/
                case 4:
                        TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Enable);
                        TIM_ForcedOC1Config(TIM1,TIM_ForcedAction_Active);        
               
                  TIM_SelectOCxM(TIM1, TIM_Channel_2, TIM_OCMode_PWM1);
                  TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Enable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
               
                        TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Disable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);
                        TIM_ForcedOC3Config(TIM1,TIM_ForcedAction_InActive);

               
                        break;
                /*----CH1-High CH1N-Low CH2-Low CH2N-Low CH3-PWM CH3N-High----*/
                case 5:
                        TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Enable);
                        TIM_ForcedOC1Config(TIM1,TIM_ForcedAction_Active);
               
                  TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
                  TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Disable);
                        TIM_ForcedOC2Config(TIM1,TIM_ForcedAction_InActive);
               
                  TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_OCMode_PWM1);
                        TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Enable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);

               
                        break;
                case 6:
                        TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);
                        TIM_ForcedOC1Config(TIM1,TIM_ForcedAction_InActive);        
               
                  TIM_CCxCmd(TIM1, TIM_Channel_2, TIM_CCx_Disable);
                  TIM_CCxNCmd(TIM1, TIM_Channel_2, TIM_CCxN_Enable);
                        TIM_ForcedOC2Config(TIM1,TIM_ForcedAction_Active);
               
                  TIM_SelectOCxM(TIM1, TIM_Channel_3, TIM_OCMode_PWM1);
                        TIM_CCxCmd(TIM1, TIM_Channel_3, TIM_CCx_Enable);
                        TIM_CCxNCmd(TIM1, TIM_Channel_3, TIM_CCxN_Disable);

               
                        break;
        }        
}



/********************************************
*
**********************************************/

void TIM3_Configuration(void)
{  
        
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  TIM_ICInitTypeDef  TIM_ICInitStructure;//êäèë2¶»ñ
  TIM_OCInitTypeDef TIM_OCInitStructure;//±è½Ïêä3ö
        GPIO_InitTypeDef GPIO_InitStructure;
        
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //ê1ÄüTIM3¶¨ê±Æ÷ê±Öó
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA  | RCC_APB2Periph_GPIOB, ENABLE);
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;    //PA6Îa±àÂëUêäèë,PA7Îa±àÂëvêäèë
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU ;                 //éèÖÃÎa¸′óø¡¿Õêä3ö
  GPIO_Init(GPIOA,&GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;             //PB0Îa±àÂëwêäèë
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU ;                 //éèÖø′óø¡¿Õêä3ö
  GPIO_Init(GPIOB,&GPIO_InitStructure);


  /* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = 0xffff;  // ¼Çμ½10000?1s
  TIM_TimeBaseStructure.TIM_Prescaler = 720-1;//100usò»′Î
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;   
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //éÏéyÑØ¼Æêy
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

  //½«TIM3μÄ2í¨μàÅäÖÃ3éPWM2Ä£ê½
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Disable;
  TIM_OCInitStructure.TIM_Pulse = 1;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//±è½Ïêä3ö¸ßμçÆ½
  TIM_OC2Init(TIM3, &TIM_OCInitStructure);


  //½«TIM3μÄ1í¨μàÅäÖÃ3éêäèë2¶»ñÄ£ê½
  TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;       // Ñ¡Ôñí¨μà1Îaêäèë2¶»ñí¨μà
  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising|TIM_ICPolarity_Falling;    //Ñ¡Ôñ
  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_TRC;  //Direct connecte
  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;     //register every rising edages
  TIM_ICInitStructure.TIM_ICFilter = 0x03;      //used 3 period to wait for Ïμí3DÅoŽóêÕÕy3£
  TIM_ICInit(TIM3, &TIM_ICInitStructure);

  TIM_SelectHallSensor(TIM3, ENABLE);   //′ò¿a»ô¶û½ó¿ú£¬êμ¼êé϶¨ê±Æ÷í¨μàμÄêäèëòì»òÃÅ
  TIM_SelectInputTrigger(TIM3, TIM_TS_TI1F_ED);   //Ñ¡Ôñê±Öó′¥·¢Ô′,TIM TL1 ±ßÑØì½2aÆ÷
  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);//¸′λÄ£ê½
  TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable); //Æô¶ˉ¶¨ê±Æ÷μĸ′λÄ£ê½
  TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_OC2Ref);//Ñ¡ÔñOC2REF×÷ÎaTRGOéÏμÄ′¥·¢êä3ö

  TIM_SetCompare1(TIM3, 0); //éèÖÃ2¶»ñ¼ÆêyÆ÷3õÖμ
  TIM_ITConfig(TIM3, TIM_IT_CC1|TIM_IT_CC2|TIM_IT_Update, ENABLE);  //¿aÆôí¨μà1μÄ2¶»ñÖD¶Ï,oíí¨μà2μıè½ÏÆ¥ÅäÖD¶Ï
    /* TIM3 enable counter */
  TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);
  TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);
  TIM_ARRPreloadConfig(TIM3, ENABLE);
        
         
  TIM_Cmd(TIM3, ENABLE);
}

u16 holl_value=0;
        void NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;               
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

    //TIM1é23μÖD¶Ï
    NVIC_InitStructure.NVIC_IRQChannel =TIM1_BRK_IRQn;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    //TIM1′¥·¢comê¼t
    NVIC_InitStructure.NVIC_IRQChannel =TIM1_TRG_COM_IRQn;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);


    //TIM1òç3öÖD¶Ï,
    NVIC_InitStructure.NVIC_IRQChannel =TIM1_UP_IRQn;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 6;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

        //TIM1òç3öÖD¶ÏÅäÖÃ,
    NVIC_InitStructure.NVIC_IRQChannel =TIM1_CC_IRQn;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 6;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);



    //TIM3í¨μà1êäèë2¶»ñÖD¶Ïoíí¨μà2μıè½ÏÆ¥ÅäÖD¶Ï
    NVIC_InitStructure.NVIC_IRQChannel =TIM3_IRQn;  
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;  
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);



    NVIC_Init(&NVIC_InitStructure);


}



void TIM1_BRK_IRQHandler(void)
{
  if(TIM_GetITStatus(TIM1, TIM_IT_Break) != RESET)
  {
    TIM_ClearITPendingBit(TIM1 , TIM_IT_Break);
//     fo_deal();
//     m_fo = 1;//fo????
  }
}

void TIM1_CC_IRQHandler(void)
{
    //±è½Ï′|àí,AD2éÑù
  if(TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET)
  {
    TIM_ClearITPendingBit(TIM1, TIM_IT_CC1);
   // ADC_SoftwareStartConvCmd(ADC1, ENABLE);

  }
  if(TIM_GetITStatus(TIM1, TIM_IT_CC2) != RESET)
  {
    TIM_ClearITPendingBit(TIM1, TIM_IT_CC2);
   // ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  }
  if(TIM_GetITStatus(TIM1, TIM_IT_CC3) != RESET)
  {
    TIM_ClearITPendingBit(TIM1, TIM_IT_CC3);

  }

}

void TIM1_TRG_COM_IRQHandler(void)
{
  TIM_ClearITPendingBit(TIM1, TIM_IT_COM);
}


void TIM1_UP_IRQHandler(void)
{

  if(TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)
  {
    TIM_ClearITPendingBit(TIM1 , TIM_IT_Update);


  }
}

void TIM3_IRQHandler(void)
{
  //??????,?????????
  if(TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET)
  {
     TIM_ClearITPendingBit(TIM3, TIM_IT_CC1);
     holl_value = 0;  
     holl_value = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)<<2 | GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7)<<1 | GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0)<<0;
                printf("holl_value is %d\r\n", holl_value);

  }
  if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
  {
    TIM_ClearITPendingBit(TIM3, TIM_IT_Update);

                BLDC_Hall_Convert(holl_value);
  }

  if(TIM_GetITStatus(TIM3, TIM_IT_CC2) != RESET)
  {
    TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);

  }
}
[/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

354

主题

1475

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8097
金钱
8097
注册时间
2015-10-15
在线时间
2919 小时
发表于 2016-1-20 20:35:10 | 显示全部楼层
没有搞过无刷电机。不过楼主只贴了代码,没有看到问题描述哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2016-1-20
在线时间
5 小时
 楼主| 发表于 2016-1-21 09:07:48 | 显示全部楼层
openedvadmin 发表于 2016-1-20 20:35
没有搞过无刷电机。不过楼主只贴了代码,没有看到问题描述哦。

就是电机没动,不知道是哪一步出了问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 18:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表