舵机驱动-GPIO MG995 STM32

应为TIM都用光了,只能使用GPIO,使用GPIO 好处就是很好移植。程序如下:

省略GPIO等初始化。PIN设置为

   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;              
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;

#ifndef _MOTOR_STEP_H_
#define _MOTOR_STEP_H_
#define MIN_DEGREE (0)
#define MAX_DEGREE (90)

#include "stm32f10x.h"

s8 MotorMoveDegree(u8 degree);

#endif
#include "motor_step.h"
#include "ioctrl.h"
#include "base_conf.h"
#define US_NUM (445)
static void Delay_100us(u16 us)//only for sysclock is 36M, Measured by OscillOscope,not a accurate delay
{
    u16 i=US_NUM;
    while(us--)
    {
        while(i--)
        __NOP();
        i=US_NUM;
    }
}

s8 MotorMoveDegree(u8 degree)
{
    u16 ON_us,OFF_us;
      u8 i=15;
        if(degree>MAX_DEGREE)return -1;
      ON_us = (u16)(25*degree/MAX_DEGREE);
      OFF_us = 200-ON_us;
      while(i--)
        {
            MotorStepSignal_ON();
            Delay_100us(ON_us);
            MotorStepSignal_OFF();
            Delay_100us(OFF_us);
        }
      return 0;    
}
void main()
{
 //system_init();
     while(1)
    {
           MotorMoveDegree(90);
        Delay_ms(100);
        MotorMoveDegree(60);
        Delay_ms(100);

    }
}

猜你喜欢

转载自www.cnblogs.com/ycpkbql/p/9122513.html