STM32用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口時鐘。
評論