164 lines
4.9 KiB
C
164 lines
4.9 KiB
C
#include "main.h"
|
||
|
||
//LED灯
|
||
#define LED_GPIO_PIN GPIO_PIN_13
|
||
#define LED_GPIO_PORT CW_GPIOC
|
||
#define LEDON() {GPIO_WritePin(LED_GPIO_PORT,LED_GPIO_PIN,GPIO_Pin_RESET);}
|
||
#define LEDOFF() {GPIO_WritePin(LED_GPIO_PORT,LED_GPIO_PIN,GPIO_Pin_SET);}
|
||
#define LEDTOG() {GPIO_TogglePin(LED_GPIO_PORT,LED_GPIO_PIN);}
|
||
//BKIN端口定义
|
||
#define BKIN_GPIO_PIN GPIO_PIN_11
|
||
#define BKIN_GPIO_PORT CW_GPIOA
|
||
|
||
//方向控制按键IO定义
|
||
#define DR_GPIO_PIN GPIO_PIN_5
|
||
#define DR_GPIO_PORT CW_GPIOB
|
||
|
||
//使能控制端按键IO定义
|
||
#define EN_GPIO_PIN GPIO_PIN_14
|
||
#define EN_GPIO_PORT CW_GPIOC
|
||
|
||
//电源输出使能IO定义
|
||
#define VOUT_EN_GPIO_PIN GPIO_PIN_6
|
||
#define VOUT_EN_GPIO_PORT CW_GPIOF
|
||
|
||
//方向指示灯IO定义
|
||
#define LEDDIR_GPIO_PIN GPIO_PIN_12
|
||
#define LEDDIR_GPIO_PORT CW_GPIOA
|
||
|
||
//启停指示灯IO定义
|
||
#define LEDSTSTO_GPIO_PIN GPIO_PIN_11
|
||
#define LEDSTSTO_GPIO_PORT CW_GPIOB
|
||
|
||
|
||
//六路PWM IO定义
|
||
#define PWM_AP_PORT (CW_GPIOA)
|
||
#define PWM_AP_PIN (GPIO_PIN_8)
|
||
#define PWM_AN_PORT (CW_GPIOB)
|
||
#define PWM_AN_PIN (GPIO_PIN_13)
|
||
|
||
#define PWM_BP_PORT (CW_GPIOA)
|
||
#define PWM_BP_PIN (GPIO_PIN_9)
|
||
#define PWM_BN_PORT (CW_GPIOB)
|
||
#define PWM_BN_PIN (GPIO_PIN_14)
|
||
|
||
#define PWM_CP_PORT (CW_GPIOA)
|
||
#define PWM_CP_PIN (GPIO_PIN_10)
|
||
#define PWM_CN_PORT (CW_GPIOB)
|
||
#define PWM_CN_PIN (GPIO_PIN_15)
|
||
|
||
|
||
#define PWM_AH_OFF GPIO_WritePin(PWM_AP_PORT,PWM_AP_PIN,GPIO_Pin_RESET)
|
||
#define PWM_BH_OFF GPIO_WritePin(PWM_BP_PORT,PWM_BP_PIN,GPIO_Pin_RESET)
|
||
#define PWM_CH_OFF GPIO_WritePin(PWM_CP_PORT,PWM_CP_PIN,GPIO_Pin_RESET)
|
||
|
||
#define PWM_AH_ON GPIO_WritePin(PWM_AP_PORT,PWM_AP_PIN,GPIO_Pin_SET)
|
||
#define PWM_BH_ON GPIO_WritePin(PWM_BP_PORT,PWM_BP_PIN,GPIO_Pin_SET)
|
||
#define PWM_CH_ON GPIO_WritePin(PWM_CP_PORT,PWM_CP_PIN,GPIO_Pin_SET)
|
||
|
||
//上管调制,下管开关控制, 上高电平下低电平
|
||
#define PWM_AL_OFF GPIO_WritePin(PWM_AN_PORT,PWM_AN_PIN,GPIO_Pin_RESET)
|
||
#define PWM_BL_OFF GPIO_WritePin(PWM_BN_PORT,PWM_BN_PIN,GPIO_Pin_RESET)
|
||
#define PWM_CL_OFF GPIO_WritePin(PWM_CN_PORT,PWM_CN_PIN,GPIO_Pin_RESET)
|
||
|
||
#define PWM_AL_ON GPIO_WritePin(PWM_AN_PORT,PWM_AN_PIN,GPIO_Pin_SET)
|
||
#define PWM_BL_ON GPIO_WritePin(PWM_BN_PORT,PWM_BN_PIN,GPIO_Pin_SET)
|
||
#define PWM_CL_ON GPIO_WritePin(PWM_CN_PORT,PWM_CN_PIN,GPIO_Pin_SET)
|
||
|
||
|
||
|
||
|
||
|
||
//载波频率20k
|
||
#define PWM_PERIOD 2399
|
||
// (48000000 / 20000 ) - 1;
|
||
#define OnepercentPWM (PWM_PERIOD+1)/100
|
||
|
||
#define STATESTARTCHECK 0
|
||
#define STATESTARTPID 1
|
||
#define STATERUNPID 2
|
||
#define STATESTOP 3
|
||
#define STATEERROR 5
|
||
#define STATEERROROVER 6
|
||
|
||
//电位器
|
||
#define NMAXVD 2950
|
||
#define NMINVD 750
|
||
//0.4V~3.2V进行调节
|
||
|
||
#define RS (float)0.005
|
||
//取样电阻
|
||
#define AP 21
|
||
//放大倍数
|
||
#define Ikvalue (float)1200/(float)AP/RS
|
||
//电流计算常数 内部参考1.2V
|
||
|
||
#define NumErr 2
|
||
//过流过压错误认定次数
|
||
|
||
//#define VSh 60
|
||
//过压值设定
|
||
#define RV1 1
|
||
#define RV2 20
|
||
//输入电压与总线电压之比:为RV1:(RV1+RV2)
|
||
|
||
#define Kvvalue (float)1.2/RV1*(RV1+RV2)
|
||
|
||
|
||
extern uint8_t ADC_CR1Array[4] ; // 通过更改ADC的CR1寄存器实现ADC通道自动切换
|
||
extern uint8_t ADC_Start ;
|
||
|
||
extern unsigned int TimeCountCompuSpeed,TimeCountTemp,TimeCountkey;
|
||
extern unsigned int TimeCountRealSpd,TimeCountPID,TimeCountAvgSpd,TimeCountVI;
|
||
|
||
extern unsigned char MOTORSTATE;
|
||
|
||
extern const unsigned int PWM_EN_TAB[6];
|
||
extern const unsigned char STEP_TAB[2][6];
|
||
|
||
extern uint16_t SampleData[4];
|
||
|
||
extern unsigned char ErrorCode; //故障状态
|
||
extern unsigned int Motor_Start_F; //电机启停状态
|
||
extern unsigned int Cur_step; //当前换相相序
|
||
extern unsigned char Dir; //方向控制
|
||
|
||
extern unsigned int HALLcount,HALLcount1,HALLcountTemp; // 霍尔脉冲计数值,用于计算平均速度和瞬时速度
|
||
extern unsigned int TargS1;//PID目标速度
|
||
extern unsigned int RealS1;//实时瞬时速度
|
||
extern unsigned int RealS;//平均速度
|
||
extern unsigned int SetSpeed;
|
||
extern float KKN,KPWMN;//计算电位器速度时的斜率
|
||
|
||
extern unsigned int OutPwmValue;//输出占空比值
|
||
|
||
extern unsigned char ErrCleFlag;
|
||
|
||
extern unsigned int SpeedD;//
|
||
|
||
extern unsigned int DIin; //电流偏置
|
||
extern unsigned int CanshuV;//母线电压100mV为单位
|
||
extern unsigned int CanshuI;//母线电流mA
|
||
|
||
|
||
//、、、、、、、、、、、、、、、、、以下参数为掉电保存参数
|
||
extern unsigned int MPolePairs; //极对数
|
||
extern unsigned int MAXSPEED; //额定转速
|
||
extern unsigned int CanshuTimeDelay;//启动延时间MS
|
||
|
||
extern unsigned int ISH;//过流报警值 A
|
||
extern unsigned int VSH;//过压报警值 V
|
||
extern unsigned int LSH;//欠压报警值 V
|
||
//开环参数
|
||
extern unsigned int PWMMin;//最低占空比
|
||
extern unsigned int PWMMax;//最大占空比输出
|
||
extern unsigned int TImeUP;//从最小占空比到最大占空比的时间
|
||
//速度闭环参数 实际缩小1000倍
|
||
extern unsigned int MINSPEED; //最低转速
|
||
extern unsigned int CanshuSTT;//启动时间MS 时间参数
|
||
extern unsigned int SP,SI,SD;
|
||
|
||
extern unsigned int STEP_last;
|
||
extern unsigned int startflag,dirflag;
|
||
extern unsigned int LevelSet;
|