操练IO口库函数操作。
- //相序
- uint16_tphasecw[4]={0x2000,0x0001,0x0004,0x0008};//D-C-B-A
- uint16_tphaseccw[4]={0x0008,0x0004,0x0001,0x2000};//A-B-C-D
- //步进电机相关IO口初始化
- //IN4:PC13
- //IN3:PC0
- //IN2:PC2
- //IN1:PC3
- voidMoto_Init(void)
- {
- GPIO_InitTypeDefGPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//GPIOCLOCKENABLE
- 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);
- }
- //电机正转
- voidMotorcw(void)
- {
- uint8_ti;
- for(i=0;i<4;i++)
- {
- GPIO_Write(GPIOC,phasecw[i]);
- delay_ms(4);
- }
- }
- //电机回转
- voidMotorccw(void)
- {
- uint8_ti;
- for(i=0;i<4;i++)
- {
- GPIO_Write(GPIOC,phaseccw[i]);
- delay_ms(4);
- }
- }
- //点击中止
- voidMotorStop(void)
- {
- GPIO_Write(GPIOC,0x0000);
- }
记住使能IO口时钟。