基于MINI STM32 步进电机 程序

    做摄像头用步进电机做转动,为了测试新板子上的驱动电路,用mini stm32飞线测试。



    步进电机为4相8拍,步进角5.625/64,转满一圈64步,512个脉冲。stm32用的PA5 PA6 PA7 PA8引脚驱动。程序直接在模板添加。正好转一圈,直接验证电路用没问题的。接下来要在android写驱动来驱动电机了。

int main(void)
 {
	 
	int i=512;   //这里转一圈需要512,可根据转的角度调整
	u32 t=5000;  //转速,调的适合摄像头  
	 
        GPIO_InitTypeDef  GPIO_InitStructure;
 	
 
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	 
	 
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;				
       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
       GPIO_Init(GPIOA, &GPIO_InitStructure);
	 
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;				 
       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		
       GPIO_Init(GPIOA, &GPIO_InitStructure);					 
	 
	
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
      GPIO_Init(GPIOA, &GPIO_InitStructure);
	 
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		  
      GPIO_Init(GPIOA, &GPIO_InitStructure);					
	 

      GPIO_SetBits(GPIOA,GPIO_Pin_7);						 //PA.7 输出高
      GPIO_SetBits(GPIOA,GPIO_Pin_6);						 //PA.6 输出高
      GPIO_SetBits(GPIOA,GPIO_Pin_8);						 //PA.8 输出高
      GPIO_SetBits(GPIOA,GPIO_Pin_5);						 //PA.5 输出高
																									 
      delay_init();	    	 //延时函数初始化					


      while(1){
         while(i){

	   GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_ResetBits(GPIOA,GPIO_Pin_6);GPIO_ResetBits(GPIOA,GPIO_Pin_7);GPIO_ResetBits(GPIOA,GPIO_Pin_8);
	   delay_us(t);
           GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_ResetBits(GPIOA,GPIO_Pin_7);GPIO_ResetBits(GPIOA,GPIO_Pin_8);
	   delay_us(t);
           GPIO_ResetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_ResetBits(GPIOA,GPIO_Pin_7);GPIO_ResetBits(GPIOA,GPIO_Pin_8);
	   delay_us(t);
           GPIO_ResetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_SetBits(GPIOA,GPIO_Pin_7);GPIO_ResetBits(GPIOA,GPIO_Pin_8);
	   delay_us(t);
           GPIO_ResetBits(GPIOA,GPIO_Pin_5);GPIO_ResetBits(GPIOA,GPIO_Pin_6);GPIO_SetBits(GPIOA,GPIO_Pin_7);GPIO_ResetBits(GPIOA,GPIO_Pin_8);
	   delay_us(t);
           GPIO_ResetBits(GPIOA,GPIO_Pin_5);GPIO_ResetBits(GPIOA,GPIO_Pin_6);GPIO_SetBits(GPIOA,GPIO_Pin_7);GPIO_SetBits(GPIOA,GPIO_Pin_8); 
	   delay_us(t);
           GPIO_ResetBits(GPIOA,GPIO_Pin_5);GPIO_ResetBits(GPIOA,GPIO_Pin_6);GPIO_ResetBits(GPIOA,GPIO_Pin_7);GPIO_SetBits(GPIOA,GPIO_Pin_8);	 
	   delay_us(t);
           GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_ResetBits(GPIOA,GPIO_Pin_6);GPIO_ResetBits(GPIOA,GPIO_Pin_7);GPIO_SetBits(GPIOA,GPIO_Pin_8);
	   delay_us(t);
           i--;	 
	 }
    }	
 }


猜你喜欢

转载自blog.csdn.net/weixin_37705509/article/details/81020080