75 lines
1.6 KiB
C
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);
|
|
}
|
|
}
|
|
}
|
|
}
|