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

75 lines
1.6 KiB
C

/*
* EndStop.c
*
* Created on: 2023年5月18日
* Author: User
*/
#include "EndStop.h"
#include "Core.h"
#include "Exti.h"
#include "Stepper.h"
static void EXTI_config(void) {
EXTI_InitTypeDef EXTI_InitStructure; // 结构定义
EXTI_InitStructure.EXTI_Mode = EXT_MODE_RiseFall; // 中断模式
EXTI_InitStructure.EXTI_Polity = PolityHigh; // 中断优先级
EXTI_InitStructure.EXTI_Interrupt = ENABLE; // 中断允许
Ext_Inilize(EXT_INT0, &EXTI_InitStructure); // 初始化INT0
Ext_Inilize(EXT_INT1, &EXTI_InitStructure); // 初始化INT1
// Ext_Inilize(EXT_INT2, &EXTI_InitStructure); // 初始化INT2
// Ext_Inilize(EXT_INT3, &EXTI_InitStructure); // 初始化INT3
}
void EndStop_Init() {
EXTI_config();
}
bit EndStop_isTrigger() {
ENDSTOP_PIN = HIGH; // 准双向口读之前要先写HIGH
NOP2();
return (ENDSTOP_PIN == LOW);
}
bit BLTouch_isTrigger() {
BLTOUCH_PIN = HIGH; // 准双向口读之前要先写HIGH
NOP2();
return (BLTOUCH_PIN == HIGH);
}
void EndStop_ISR() {
if (runMode == MODE_HOME) {
switch (runState) {
case STATE_HOME_FIRST_WAIT:
if (ENDSTOP_TRIGGER) {
STOP_STEPPER;
changeState(STATE_HOME_LEAVE_INIT);
}
break;
case STATE_HOME_AGAIN_WAIT:
if (ENDSTOP_TRIGGER) {
STOP_STEPPER;
changeState(STATE_DONE);
}
break;
default: break;
}
}
}
void BLTouch_ISR() {
if (runMode == MODE_TEST) {
if (runState == STATE_TEST_SLOW_WAIT) {
if (BLTOUCH_TRIGGER) {
STOP_STEPPER;
changeState(STATE_DONE);
}
}
}
}