練習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