#ifndef __BEMF_H #define __BEMF_H #ifdef MOT_LOCAL #define MOT_EXT #else #define MOT_EXT extern #endif #include "gd32F30x.h"//#include "main.h" /* GPIO pin definitions */ #define ALARM_OVERVOL BIT(0) /*!< GPIO pin 0 */ #define ALARM_LOWVOL BIT(1) /*!< GPIO pin 1 */ #define ALARM_OVERCUR BIT(2) /*!< GPIO pin 2 */ #define ALARM_3 BIT(3) /*!< GPIO pin 3 */ #define ALARM_OVEROPENLOOP BIT(4) /*!< GPIO pin 4 */ #define ALARM_TIMEOUT BIT(5) /*!< GPIO pin 5 */ #define ALARM_6 BIT(6) /*!< GPIO pin 6 */ #define ALARM_7 BIT(7) /*!< GPIO pin 7 */ #define ALARM_8 BIT(8) /*!< GPIO pin 8 */ #define ALARM_9 BIT(9) /*!< GPIO pin 9 */ #define ALARM_10 BIT(10) /*!< GPIO pin 10 */ #define ALARM_11 BIT(11) /*!< GPIO pin 11 */ #define ALARM_12 BIT(12) /*!< GPIO pin 12 */ #define ALARM_13 BIT(13) /*!< GPIO pin 13 */ #define ALARM_14 BIT(14) /*!< GPIO pin 14 */ #define ALARM_15 BIT(15) /*!< GPIO pin 15 */ #define ALARM_ALL BITS(0,15) /*!< GPIO pin all */ typedef enum{ IDEL = 0, START, POSITION, OPENLOOP, SWITCH, RUN, STOP, BRAKESTOP, TEST }MCI_State_t; typedef enum{ DIR0 = 0, DIR1, DIRX }MCI_DIR_t; typedef enum{ SPEED0 = 0, SPEEDUP , SPEEDHOLD, SPEEDDOWN }MCI_Speed_t; #define POLE 3 #define DUTY_BASE 3 #define DUTY_POSITIONEND 35 #define DUTYMAX 100 #define INVERT_CNT 60 #define HIGHSPEED 1667 #define STARTGAP 5000 #define DUTYDEF 6000//temp para typedef struct { //set unsigned short state; //motor main state unsigned short spd;//motor speed state unsigned short dir; //motor direction unsigned short pulse;//motor power unsigned short gap; //motor invert_gap //back unsigned short voltage; //motor work voltage unsigned short current; //motor work current unsigned short speed; //motor work speed unsigned short alarm; //motor alarm unsigned short invert_cnt;//motor invert_count }MOTORDEF; MOT_EXT MOTORDEF mci; typedef struct { unsigned short start_gap; //motor start_up gap unsigned short end_gap; //motor End of start_up gap unsigned short start_pulse;//motor start_up pulse unsigned short end_pulse; //motor End of start_up pulse }MOTORPOSITIONDEF; MOT_EXT MOTORPOSITIONDEF Mcp; MOT_EXT unsigned short adc_zero; MOT_EXT unsigned short timer2; MOT_EXT unsigned short test_bemf_start_cnt; MOT_EXT unsigned short test_bemf_run_cnt; MOT_EXT void BEMF_Init(uint16_t dir,uint16_t speed,uint16_t dutyDefault); MOT_EXT void BEMF_Task(void); #endif /* alarm: bit 15 | bit 14 | bit 13 | bit 12 | bit 11 | bit 10 | bit 9 | bit 8 | bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 | bit 15 | bit 14 | bit 13 | bit 12 | bit 11 | bit 10 | bit 9 | bit 8 | bit 7 | bit 6 | timout| nobem | Iover | Ilow | VMover| VMlow | */