position_task.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * position_task.h
  3. *
  4. * Created on: Nov 6, 2024
  5. * Author: jakubski
  6. */
  7. #ifndef INC_POSITION_TASK_H_
  8. #define INC_POSITION_TASK_H_
  9. #include "cmsis_os.h"
  10. #include "main.h"
  11. enum _MovementPhases
  12. {
  13. idlePhase,
  14. startPhase,
  15. speedUpPhase,
  16. movePhase,
  17. slowDownPhase,
  18. stopPhase
  19. };
  20. typedef enum _MovementPhases MovementPhases;
  21. struct _PositionControlTaskInitArg
  22. {
  23. TIM_HandleTypeDef* htim;
  24. TIM_OC_InitTypeDef* motorTimerConfigOC;
  25. uint8_t channel1;
  26. uint8_t channel2;
  27. osTimerId_t motorTimerHandle;
  28. osMessageQueueId_t positionSettingQueue;
  29. uint8_t* switchLimiterUpStat;
  30. uint8_t* switchLimiterDownStat;
  31. uint8_t* switchLimiterCenterStat;
  32. float* currentPosition;
  33. float* positionOffset;
  34. float* positionSetting;
  35. uint8_t* motorStatus;
  36. float* motorPeakCurrent;
  37. char axe;
  38. };
  39. typedef struct _PositionControlTaskInitArg PositionControlTaskInitArg;
  40. struct _PositionControlTaskData
  41. {
  42. float positionSettingValue;
  43. };
  44. typedef struct _PositionControlTaskData PositionControlTaskData;
  45. extern PositionControlTaskInitArg positionXControlTaskInitArg;
  46. extern PositionControlTaskInitArg positionYControlTaskInitArg;
  47. void PositionControlTaskInit(void);
  48. void PositionControlTask (void* argument);
  49. #endif /* INC_POSITION_TASK_H_ */