73 lines
1.7 KiB
C
73 lines
1.7 KiB
C
/*
|
|
* Stepper.c
|
|
*
|
|
* Created on: 2023年5月17日
|
|
* Author: User
|
|
*/
|
|
|
|
#include "Stepper.h"
|
|
|
|
#include "timer.h"
|
|
|
|
static u16 curPos = 0;
|
|
|
|
static void Timer_config(void) {
|
|
TIM_InitTypeDef TIM_InitStructure; // 结构定义
|
|
TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; // 指定工作模式
|
|
TIM_InitStructure.TIM_Polity = PolityHigh; // 指定中断优先级
|
|
TIM_InitStructure.TIM_Interrupt = DISABLE; // 中断是否允许
|
|
TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T; // 指定时钟源
|
|
TIM_InitStructure.TIM_ClkOut = DISABLE; // 是否输出高速脉冲
|
|
TIM_InitStructure.TIM_Value = 0; // 初值
|
|
TIM_InitStructure.TIM_Run = ENABLE; // 是否初始化后启动定时器
|
|
Timer_Inilize(Timer0, &TIM_InitStructure); // 初始化Timer0
|
|
}
|
|
|
|
void Stepper_Init() {
|
|
STEPPER_EN = HIGH; // 初始化禁用电机
|
|
STEPPER_STEP = LOW; // 初始化步进
|
|
STEPPER_DIR = LOW; // 初始化方向
|
|
Timer_config();
|
|
Stepper_SetHz(STEPPER_FAST_HZ);
|
|
}
|
|
|
|
void Stepper_SetHz(u16 hz) {
|
|
// stepperStepReloadValue = (500000L / hz);
|
|
Timer0_Load_us(500000L / hz);
|
|
}
|
|
|
|
void Stepper_SetDir(u8 upOrDown) {
|
|
STEPPER_DIR = upOrDown;
|
|
}
|
|
|
|
void Stepper_SetEnable(u8 enable) {
|
|
STEPPER_EN = !enable;
|
|
}
|
|
|
|
void Stepper_SetPos(u16 pos) {
|
|
curPos = pos;
|
|
}
|
|
|
|
bit Stepper_IsEnable() {
|
|
return (STEPPER_EN == LOW);
|
|
}
|
|
|
|
bit Stepper_ComparePos(u16 pos) {
|
|
if (curPos > pos)
|
|
return TRUE;
|
|
else
|
|
return FALSE;
|
|
}
|
|
|
|
u16 Stepper_GetPos() {
|
|
return curPos;
|
|
}
|
|
|
|
void Stepper_ISR() {
|
|
STEPPER_STEP = !STEPPER_STEP;
|
|
if (STEPPER_STEP)
|
|
if (STEPPER_DIR)
|
|
curPos++;
|
|
else
|
|
curPos--;
|
|
} |