141 lines
3.9 KiB
C
141 lines
3.9 KiB
C
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6·<36><C2B7><EFBFBD><EFBFBD><EFBFBD>첽<EFBFBD>˶<EFBFBD>
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#ifndef __STM32MOTOS_H__
|
|||
|
|
#define __STM32MOTOS_H__
|
|||
|
|
|
|||
|
|
#include "config.h"
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6·<36><C2B7><EFBFBD><EFBFBD><EFBFBD>첽<EFBFBD>˶<EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD> <20>˶<EFBFBD>
|
|||
|
|
|
|||
|
|
#ifndef STM32_MOTOS_NUM
|
|||
|
|
#define STM32_MOTOS_NUM 0 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------
|
|||
|
|
// <20><><EFBFBD><EFBFBD>PWM<57>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#ifndef STM32_SOFT_PWM
|
|||
|
|
#define STM32_SOFT_PWM 0
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ģʽ
|
|||
|
|
#define MODE_CWCCW 0
|
|||
|
|
#define MODE_STEPDIR 1
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------
|
|||
|
|
// <20>˶<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
#define STM32MOTO_ERR -1 // <20>쳣
|
|||
|
|
#define STM32MOTO_STOP 0 // ֹͣ
|
|||
|
|
#define STM32MOTO_ADD 1 // <20><><EFBFBD><EFBFBD>
|
|||
|
|
#define STM32MOTO_RUN 2 // <20><><EFBFBD><EFBFBD>
|
|||
|
|
#define STM32MOTO_DEC 3 // <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
#define STM32MOTO_NSTOP 4 // ͣ<><CDA3>(<28><><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3>)
|
|||
|
|
#define STM32MOTO_EMC 5 // ɲ<><C9B2>(<28><><EFBFBD><EFBFBD>ɲ<EFBFBD><C9B2>)
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><CBB6><EFBFBD><EFBFBD>ƽӿ<C6BD>
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD>
|
|||
|
|
s32 movement; // λ<><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
u32 startPPS; // <20><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|||
|
|
u32 runPPS; // <20>˶<EFBFBD><CBB6>ٶ<EFBFBD>
|
|||
|
|
u32 addPPSG; // <20><>ͣ<EFBFBD><CDA3><EFBFBD>ٶ<EFBFBD>
|
|||
|
|
u32 brkPPSG; // ɲ<><C9B2><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
|
|||
|
|
|
|||
|
|
u32 funTestTime; // <20><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> 0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD> (<28><>λ:0.1ms)
|
|||
|
|
int syncList[6]; // ͬ<><CDAC><EFBFBD>ƶ<EFBFBD>ѡ<EFBFBD><D1A1>
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
|
int (*GetNormalStop)(u32,u32); // һ<><D2BB>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>; <20><>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD>ٵ<EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ٶȽ<D9B6><C8BD>٣<EFBFBD>
|
|||
|
|
int (*GetQuickStop)(u32,u32); // <20><><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>; <20><>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD><E3A3AC><EFBFBD>ٵ<EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD><EFBFBD><EFBFBD>ٶȽ<D9B6><C8BD>٣<EFBFBD>
|
|||
|
|
u32 condPara1, condPara2; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
int blockRunflag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>־, =1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ͬ<><CDAC><EFBFBD>˶<EFBFBD> =0,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>첽<EFBFBD>˶<EFBFBD>
|
|||
|
|
void (*ExecWhenRun)(void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>еĺ<D0B5><C4BA><EFBFBD>
|
|||
|
|
void (*ExecWhenStart)(void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱִ<CAB1>еĺ<D0B5><C4BA><EFBFBD>
|
|||
|
|
void (*ExecWhenStop)(void); // <20><><EFBFBD><EFBFBD>ֹͣʱִ<CAB1>еĺ<D0B5><C4BA><EFBFBD>
|
|||
|
|
|
|||
|
|
}MotoCtrl;
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------
|
|||
|
|
|
|||
|
|
typedef void (*OutFunc)(void);
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define MOTO_FUNC_DEF(x) \
|
|||
|
|
\
|
|||
|
|
void InitStm32Moto##x##OutFunc(OutFunc stepOn, OutFunc StepOff, OutFunc dirOn, OutFunc dirOff); /* <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ \
|
|||
|
|
int STM32Moto##x##Start(MotoCtrl * pCtrl); /* <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ \
|
|||
|
|
void STM32Moto##x##Stop (void); /* <20><><EFBFBD>ܣ<EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD> */ \
|
|||
|
|
int STM32Moto##x##Run(MotoCtrl * pCtrl); /* <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD> */ \
|
|||
|
|
int GetSTM32Moto##x##State(void); /* <20><><EFBFBD>ܣ<EFBFBD><DCA3>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD> */ \
|
|||
|
|
void SetSTM32Moto##x##Mode(int mode); /* <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>巽ʽ */ \
|
|||
|
|
void SetSTM32Moto##x##RunSpd(u32 spd); /* <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ٶ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>õ<EFBFBD>) */ \
|
|||
|
|
s32 GetSTM32Moto##x##RealPos(void); /* <20><><EFBFBD>ܣ<EFBFBD><DCA3>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>꣨<EFBFBD><EAA3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD> */ \
|
|||
|
|
void SetSTM32Moto##x##RealPos(s32 pos); /* <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>꣨<EFBFBD><EAA3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD> */ \
|
|||
|
|
void STM32Moto##x##IntProc(void); /* <20><><EFBFBD>ܣ<EFBFBD><DCA3>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */ \
|
|||
|
|
//-------------------------------
|
|||
|
|
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void InitSTM32Motos(void);
|
|||
|
|
void InitSTM32SoftPwm(OutFunc pwmProc);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//-------------------------------
|
|||
|
|
#if (STM32_MOTOS_NUM > 0 || STM32_SOFT_PWM > 0)
|
|||
|
|
void STM32MotoSpeedIntProc(void); /* <20><><EFBFBD>ܣ<EFBFBD><DCA3>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// MOTO1
|
|||
|
|
#if (STM32_MOTOS_NUM >= 1)
|
|||
|
|
MOTO_FUNC_DEF(1);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// MOTO2
|
|||
|
|
#if (STM32_MOTOS_NUM >= 2)
|
|||
|
|
MOTO_FUNC_DEF(2);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// MOTO3
|
|||
|
|
#if (STM32_MOTOS_NUM >= 3)
|
|||
|
|
MOTO_FUNC_DEF(3);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// MOTO4
|
|||
|
|
#if (STM32_MOTOS_NUM >= 4)
|
|||
|
|
MOTO_FUNC_DEF(4);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// MOTO5
|
|||
|
|
#if (STM32_MOTOS_NUM >= 5)
|
|||
|
|
MOTO_FUNC_DEF(5);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
// MOTO6
|
|||
|
|
#if (STM32_MOTOS_NUM >= 6)
|
|||
|
|
MOTO_FUNC_DEF(6);
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//---------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|