Files
BLTouchTest/App/Stepper.c
2023-05-19 15:50:27 +08:00

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--;
}