Files
linear-Slide/Application/app_main.c

98 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "main.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"
#include "app_main.h"
#include "Com_type.h"
#include "Com_debug.h"
#include "Int_Encoder.h"
#include "Int_TMC2209.h"
#include "app_key.h"
#include "app_motor.h"
#include "app_param_store.h"
#include "app_test.h"
#include "CANopen.h"
#include "CO_app_STM32.h"
#include "can.h"
Encoder_t encoder_1 = {0};
Stepper_t stepper_1 = {
.dir = GPIO_PIN_RESET, // 方向(1为手轮方向0为电机方向)
.distance = 100.0f,
.speed = 50.0f,
.acc = 40.0f,
.dec = 40.0f,
.start_speed = 5.0f,
};
CANopenNodeSTM32 CANopenNode;
static void App_PrintKeyUsage(void)
{
debug_printf("%s", "================ 按键功能说明 ================");
debug_printf("%s", "K1 (单击): 自动回零 (HOME, 低速 5 mm/s)");
debug_printf("%s", "K2 (长按): JOG+ 正向点动, 松开后减速停止");
debug_printf("%s", "K3 (长按): JOG- 反向点动, 松开后减速停止");
debug_printf("%s", "K4 (单击): 速度档位循环 5 -> 25 -> 60 mm/s");
debug_printf("%s", "K5 (单击): 紧急停止 (立即停机)");
debug_printf("%s", "提示: 回零完成以零位开关触发为准");
debug_printf("%s", "==============================================");
}
static void CANopenNode_init(void)
{
CANopenNode.CANHandle = &hcan1;
CANopenNode.HWInitFunction = MX_CAN1_Init;
CANopenNode.timerHandle = &htim11;
CANopenNode.desiredNodeID = 3;
CANopenNode.baudrate = 500;
canopen_app_init(&CANopenNode);
}
void app_main(void)
{
debug_printf("hello three-axis steppers");
App_PrintKeyUsage();
CANopenNode_init();
App_Motor_Init();
App_ParamStore_Init();
(void)App_ParamStore_LoadAndApply();
while (1)
{
App_key_run(&stepper_1);
canopen_app_process();
App_Motor_Process();
App_ParamStore_Process();
}
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
switch (GPIO_Pin)
{
case X_ZERO_Pin:
stepper_1.x_zero = 1;
break;
case ENCODER1_Z_Pin:
encoder_1.z++;
break;
default:
break;
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim == CANopenNode.timerHandle)
{
canopen_app_interrupt();
}
if (htim->Instance == TIM12)
{
App_Motor_StepLossCheck();
}
}