功能:由软件设定旋转角度实现正反转,根据旋转角度输出对应的脉冲个数。
我是根据正点原子步进电机定位实验写的。
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define F_CPU 16000000UL
#define PRESCALER 8 // 预分频系数
#define PWM_FREQUENCY 1500 // PWM频率(Hz)
#define TOP_VALUE ((F_CPU / PRESCALER / PWM_FREQUENCY) - 1) // 计算TOP值,注意数据类型
//串口初始化
#define MOTO_ENABLE PORTB &= ~(1 << PB4)
#define MOTO_DISABLE PORTB |= (1 << PB4)
#define MOTO_RIGHT PORTB |= (1 << PB6)
#define MOTO_LEFT PORTB &= ~(1 << PB6)
#define MAX_STEP_ANGLE 0.1125 /* 步距角 */
uint8_t g_run_flag;
typedef struct
{
int angle ; /* 存取角度值 */
uint8_t dir; /* 方向 */
uint8_t en; /* 使能 */
volatile uint32_t pulse_count;