STM32用IO口控制步進電機的簡單程序

練習IO口庫函數操做。函數

//相序
uint16_t phasecw[4] ={0x2000,0x0001,0x0004,0x0008};// D-C-B-A
uint16_t phaseccw[4]={0x0008,0x0004,0x0001,0x2000};// A-B-C-D


 

//步進電機相關IO口初始化
// IN4:	PC13
// IN3:	PC0
// IN2:	PC2
// IN1:	PC3
void Moto_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);			//GPIO CLOCK ENABLE
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	//推輓輸出		
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	//50MHz速率
	GPIO_Init(GPIOC, &GPIO_InitStructure);			
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);					//輸出低電平

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_ResetBits(GPIOC,GPIO_Pin_0);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_ResetBits(GPIOC,GPIO_Pin_2);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	GPIO_ResetBits(GPIOC,GPIO_Pin_3);
}


 

//電機正轉
void Motorcw(void)
{
	uint8_t i;

	for(i=0;i<4;i++)
  	{
  		GPIO_Write(GPIOC,phasecw[i]);
   		delay_ms(4);
	}
}

//電機反轉
void Motorccw(void)
{
	uint8_t i;
 	for(i=0;i<4;i++)
  	{
  		GPIO_Write(GPIOC,phaseccw[i]);
   		delay_ms(4);
   	}
}

//點擊中止
void MotorStop(void)
{
 	GPIO_Write(GPIOC,0x0000);
}


記得使能IO口時鐘。
ui

相關文章
相關標籤/搜索