/* * position_task.h * * Created on: Nov 6, 2024 * Author: jakubski */ #ifndef INC_POSITION_TASK_H_ #define INC_POSITION_TASK_H_ #include "cmsis_os.h" #include "main.h" enum _MovementPhases { idlePhase, startPhase, speedUpPhase, movePhase, slowDownPhase, stopPhase }; typedef enum _MovementPhases MovementPhases; struct _PositionControlTaskInitArg { TIM_HandleTypeDef* htim; TIM_OC_InitTypeDef* motorTimerConfigOC; uint8_t channel1; uint8_t channel2; osTimerId_t motorTimerHandle; osMessageQueueId_t positionSettingQueue; uint8_t* switchLimiterUpStat; uint8_t* switchLimiterDownStat; uint8_t* switchLimiterCenterStat; float* currentPosition; float* positionSetting; uint8_t* motorStatus; float* motorPeakCurrent; char axe; }; typedef struct _PositionControlTaskInitArg PositionControlTaskInitArg; struct _PositionControlTaskData { float positionSettingValue; }; typedef struct _PositionControlTaskData PositionControlTaskData; extern PositionControlTaskInitArg positionXControlTaskInitArg; extern PositionControlTaskInitArg positionYControlTaskInitArg; void PositionControlTaskInit(void); void PositionControlTask (void* argument); #endif /* INC_POSITION_TASK_H_ */