/*============================================================
File name: main.c

Originator: XXW THU

Description: define the functions related with main

Reference: none

============================================================
History:
------------------------------------------------------------
2017-07-19 Version 1.0
------------------------------------------------------------*/


#include "DSP28x_Project.h" 
#include "C28x_FPU_FastRTS.h"
#include <math.h>

//将用户定义的头文件包含进来
#include "ADC_volt_current_get.h"
#include "ePWMs.h"

#include "clarke.h"
#include "park.h"
#include "ipark.h"
#include "SVPWM_2L.h"
#include "PID.h"
#include "protect.h"
#include "SetGpio.h"

////****Flash固化相关程序开始****
//extern Uint16 RamfuncsLoadStart;
//extern Uint16 RamfuncsLoadEnd;
//extern Uint16 RamfuncsRunStart;
//
//#pragma CODE_SECTION(xint1_isr, "ramfuncs");
//#pragma CODE_SECTION(xint2_isr, "ramfuncs");
//#pragma CODE_SECTION(epwm1_timer_isr, "ramfuncs");
////****Flash固化相关程序结束****

//=======宏定义=================================================
#define  T     0.0002   // PWM调制周期，也是离散化时的采样周期，单位 s
#define  PI    3.141592654

//****异步电动机参数****
#define  MaxRPM  1260  //同步转速，单位 转/分钟
#define  p  2    //电机极对数
#define  w1  MaxRPM*PI*2/60*p  //同步电角速度，单位rad/s
#define  Rs   18.7  //定子电阻，单位 欧姆
#define  Ld   0.02682   //d轴电感，单位H
#define  Lq   0.02682   //q轴电感，单位H
#define  J    2.26e-5   //转动惯量，单位kg·m2

//定义保护相关常数
#define 	Udc_max	12	//直流母线电压最大值
#define 	Udc_min	5	//直流母线电压最小值
#define 	Iac_max	10	//交流电流最大值
#define 	Idc_max	10	//直流电流最大值
#define 	Temp1_max	125	//线圈温度最大值
#define 	Temp1_min	-40	//线圈温度最小值
#define 	Temp2_max	125	//壳体温度最大值
#define 	Temp2_min	-40	//壳体温度最小值
#define 	OVER_VOLTAGE_SHOOT	10	//过、欠电压检测次数
#define 	OVER_CURRENT_SHOOT	10	//过电流检测次数
#define 	OVER_TEMP_SHOOT	10	//过、欠温度检测次数

#define  PWMS_FRC_DISABLE  0x0000  //宏定义，禁止ePWM模块强制功能
#define  PWMS_ALBL   0x0005    //宏定义，强制ePWM模块中ePWMA为低电平、ePWMB为低电平
#define  PWMS_AHBH   0x000A    //宏定义，强制ePWM模块中ePWMA为高电平、ePWMB为高电平
#define  PWMS_AHBL   0x0006    //宏定义，强制ePWM模块中ePWMA为高电平、ePWMB为低电平
#define  PWMS_ALBH   0x0009    //宏定义，强制ePWM模块中ePWMA为低电平、ePWMB为高电平

#define  SPEED_STEP  0.0005 //速度步长，标么值，用于速度给定环节

//======== 全局变量 ====================================================
volatile Uint16 Enable_flag = 1;    //全局使能位，1有效
volatile Uint16 Fault_flag = 0;    //全局使能位，1有效

////测试程序开始
//volatile Uint16 i = 0;
//volatile Uint32 j = 0;
//volatile Uint16 de = 0;
//volatile float PWM1A[100];
//volatile float PWM2A[100];
//volatile float PWM3A[100];
//volatile float PWM4A[100];
//volatile float PWM5A[100];
//volatile float PWM6A[100];
//volatile float al[100];
//volatile float be[100];
////测试程序结束


//定义转速、转矩、id、iq的参考值
volatile float currentref=0.1;  //电流参考值
volatile float Teref=0;  //电磁转矩参考值

//定义PI调节器的参数及输出限幅值
volatile float  Isd1Kp=2, Isd1Ki=15, Isd1Limit = 12;  //isd1 PI调节器
volatile float  Isq1Kp=2, Isq1Ki=15, Isq1Limit = 12;  //isq1 PI调节器
volatile float  Isd2Kp=2, Isd2Ki=15, Isd2Limit = 12;  //isd2 PI调节器
volatile float  Isq2Kp=2, Isq2Ki=15, Isq2Limit = 12;  //isq2 PI调节器

volatile float Mech_speed_w = 0;   //变量，机械角速度
volatile float Elec_speed_w = 0;    //变量，电角速度

//以下结构体变量的定义与用户在相应头文件里的定义有关
ADC_VOLT_CURRENT_GET  Volt_current = ADC_VOLT_CURRENT_GET_DEFAULTS;  //AD采样模块对应的结构体变量
EPWMS  Epwm_modules = EPWMS_DEFAULTS; //ePWM模块对应的结构体变量

//保护程序对应的结构体变量
Protect prot = Protect_DEFAULTS;

//坐标变换,在异步电动机转子磁链定向控制系统中，dq坐标系即为MT坐标系，只是名称不同
CLARKE  Iabc_to_Ialphabeta = CLARKE_DEFAULTS; //Clarke变换：电流ia ib ic iu iv iw向iα1 iβ1 iα2 iβ2变换对应的结构体变量
PARK  Ialphabeta_to_Idq1 = PARK_DEFAULTS;   //Park变换：电流iα iβ向id iq变换对应的结构体变量
PARK  Ialphabeta_to_Idq2 = PARK_DEFAULTS;   //Park变换：电流iα iβ向id iq变换对应的结构体变量
IPARK  Udq_to_Ualphabeta1 = IPARK_DEFAULTS; //反Park变换：电压ud uq向uα uβ变换对应的结构体变量
IPARK  Udq_to_Ualphabeta2 = IPARK_DEFAULTS; //反Park变换：电压ud uq向uα uβ变换对应的结构体变量

//PI调节器对应的结构体变量
PID_FUNC   A_Isd1_R=PID_FUNC_DEFAULTS;  //d轴电流PI调节器A_Isd1_R
PID_FUNC   A_Isq1_R=PID_FUNC_DEFAULTS; //q轴电流PI调节器A_Isq1_R
PID_FUNC   A_Isd2_R=PID_FUNC_DEFAULTS;//d轴电流PI调节器A_Isd2_R
PID_FUNC   A_Isq2_R=PID_FUNC_DEFAULTS;//q轴电流PI调节器A_Isq2_R

//两电平矢量PWM算法对应的结构体变量
SVPWM_2L  Svpwm_ABC = SVPWM_2L_DEFAULTS;
SVPWM_2L  Svpwm_UVW = SVPWM_2L_DEFAULTS;


//========函数声明 ==============================================
interrupt void xint1_isr(void);	//外部中断1服务函数
interrupt void xint2_isr(void);	//外部中断2服务函数
interrupt void epwm1_timer_isr(void); //ePWM1周期中断服务函数
void clear_states(void); //状态清除函数

//========主程序==================================================
void main()
{
    InitSysCtrl(); //系统初始化
    DINT;//关闭全局中断
    InitPieCtrl();//初始化中断控制寄存器
    IER= 0x0000;//关闭CPU中断
    IFR = 0x0000;//清除CPU中断信号
    InitPieVectTable();//初始化中断向量表

    //延时50ms，等待控制板上其他模块完成初始化
    DELAY_US(50000L);

    //****配置中断函数地址****
    EALLOW;
    //    PieVectTable.XINT1 = &xint1_isr;		//配置外部中断1向量地址
    //    PieVectTable.XINT2 = &xint2_isr;		//配置外部中断2向量地址
    PieVectTable.EPWM1_INT = &epwm1_timer_isr;   //配置EPWM1中断向量地址
    EDIS;

    //    IER |= M_INT1;		//使能CPU INT1模块的中断功能
    IER |= M_INT3;// 使能CPU INT3模块的中断功能
    //    PieCtrlRegs.PIEIER1.bit.INTx4  = 1;	//使能PIE模块中外部中断1
    //    PieCtrlRegs.PIEIER1.bit.INTx5  = 1;	//使能PIE模块中外部中断2
    PieCtrlRegs.PIEIER3.bit.INTx1 = 1; 	//使能PIE模块中EPWM INTn

    //****ePWM模块初始化部分****
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;  //在配置ePWM模块前先禁止TBCLK时钟
    EDIS;

    //由于在ePWMs.c文件中设定TBCLK = SYSCLKOUT，且为增减计数模式，故三角波周期=2*15000*6.67ns=200us
    Epwm_modules.PeriodMax = 7500;  //设定计数器的最大计数值
    Epwm_modules.init(&Epwm_modules); //调用ePWMs模块的初始化函数，开始初始化

    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; //配置完成后，重新使能TBCLK时钟信号
    EDIS;

    //在矢量系统开始工作前，强制ePWM1~ePWM6模块输出脉冲为低电平，避免开关管误开通
    //强制ePWM1~ePWM6模块输出脉冲为低电平前需先禁止死区输出，否则A、B通道为互补输出
    EPwm1Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出
    EPwm2Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出
    EPwm3Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出
    EPwm4Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出
    EPwm5Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出
    EPwm6Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出

    EPwm1Regs.AQCSFRC.all = PWMS_ALBL;
    EPwm2Regs.AQCSFRC.all = PWMS_ALBL;
    EPwm3Regs.AQCSFRC.all = PWMS_ALBL;
    EPwm4Regs.AQCSFRC.all = PWMS_ALBL;
    EPwm5Regs.AQCSFRC.all = PWMS_ALBL;
    EPwm6Regs.AQCSFRC.all = PWMS_ALBL;

    //****GPIO配置****
    gpioset();


    //****ADC模块初始化****
    Volt_current.init(&Volt_current); //调用ADC模块初始化函数

    //	//****保护模块初始化****
    //	prot.Udcmax=Udc_max;
    //	prot.Udcmin=Udc_min;
    prot.Iacmax=Iac_max;
    prot.Idcmax=Idc_max;
    //	prot.Temp1max=Temp1_max;
    //	prot.Temp1min=Temp1_min;
    //	prot.Temp2max=Temp2_max;
    //	prot.Temp2min=Temp2_min;
    prot.OVERVOLTAGE_SHOOT=OVER_VOLTAGE_SHOOT;
    prot.OVERCURRENT_SHOOT=OVER_CURRENT_SHOOT;
    //	prot.OVERTEMP_SHOOT=OVER_TEMP_SHOOT;

    //	//****eQEP模块初始化****
    //	Pos_speed.init(&Pos_speed); //调用eQEP模块初始化函数

    //****初始化调节器****
    A_Isd1_R.Give = 0;
    A_Isd1_R.Kp = Isd1Kp;
    A_Isd1_R.Ki = Isd1Ki;
    A_Isd1_R.Ts = T;
    A_Isd1_R.OutMax = Isd1Limit;
    A_Isd1_R.OutMin =-Isd1Limit;
    A_Isd1_R.init(&A_Isd1_R);

    A_Isq1_R.Give = currentref;
    A_Isq1_R.Kp = Isq1Kp;
    A_Isq1_R.Ki = Isq1Ki;
    A_Isq1_R.Ts = T;
    A_Isq1_R.OutMax = Isq1Limit;
    A_Isq1_R.OutMin =-Isq1Limit;
    A_Isq1_R.init(&A_Isq1_R);

    A_Isd2_R.Give = 0;
    A_Isd2_R.Kp = Isd2Kp;
    A_Isd2_R.Ki = Isd2Ki;
    A_Isd2_R.Ts = T;
    A_Isd2_R.OutMax = Isd2Limit;
    A_Isd2_R.OutMin =-Isd2Limit;
    A_Isd2_R.init(&A_Isd2_R);

    A_Isq2_R.Give = currentref;
    A_Isq2_R.Kp = Isq2Kp;
    A_Isq2_R.Ki = Isq2Ki;
    A_Isq2_R.Ts = T;
    A_Isq2_R.OutMax = Isq2Limit;
    A_Isq2_R.OutMin =-Isq2Limit;
    A_Isq2_R.init(&A_Isq2_R);

    //****开始工作****
    while(Enable_flag==0); //等待，直到Enable_flag=1时开始向下执行，调试时可直接通过CCS设定Enable_flag的值

    EINT; //开CPU中断
    ERTM;

    //	//****LED测试程序开始****
    //	   EALLOW;
    //	   GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0;
    //	   GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1;
    //	   EDIS;
    //	//****LED测试程序结束****



    //死循环
    while(1)
    {
        if((Enable_flag==0) || (Fault_flag==1)) //如果在运行过程中，Enable_flag被清零或者Fault_flag被置1，那么强制各个ePWM模块输出为低电平
        {
            EPwm1Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出
            EPwm2Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出
            EPwm3Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出
            EPwm4Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出
            EPwm5Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出
            EPwm6Regs.DBCTL.bit.OUT_MODE = DB_DISABLE	;//禁止死区输出

            EPwm1Regs.AQCSFRC.all = PWMS_AHBH;
            EPwm2Regs.AQCSFRC.all = PWMS_AHBH;
            EPwm3Regs.AQCSFRC.all = PWMS_AHBH;
            EPwm4Regs.AQCSFRC.all = PWMS_AHBH;
            EPwm5Regs.AQCSFRC.all = PWMS_AHBH;
            EPwm6Regs.AQCSFRC.all = PWMS_AHBH;
            //			clear_states();
        }
        else //正常运行时，禁止ePWM模块的强制功能
        {
            EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//使能死区输出
            EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//使能死区输出
            EPwm3Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//使能死区输出
            EPwm4Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//使能死区输出
            EPwm5Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//使能死区输出
            EPwm6Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;//使能死区输出

            EPwm1Regs.AQCSFRC.all = PWMS_FRC_DISABLE;
            EPwm2Regs.AQCSFRC.all = PWMS_FRC_DISABLE;
            EPwm3Regs.AQCSFRC.all = PWMS_FRC_DISABLE;
            EPwm4Regs.AQCSFRC.all = PWMS_FRC_DISABLE;
            EPwm5Regs.AQCSFRC.all = PWMS_FRC_DISABLE;
            EPwm6Regs.AQCSFRC.all = PWMS_FRC_DISABLE;
        }


        //		//****LED测试程序开始****
        //	       DELAY_US(100000L);
        //	       GpioDataRegs.GPBTOGGLE.bit.GPIO60 = 1;
        //	   	//****LED测试程序结束****

    }
}

//==============================================================
//中断服务函数
//==============================================================
//**********************************
/*
  @ Description: ePWM1周期中断服务函数
  @ Param
  @ Return
 */
//**********************************
void epwm1_timer_isr()
{
    //采样电压电流
    Volt_current.read(&Volt_current);

    //****测试程序开始****
    //    PWM1A[i]=Volt_current.Volt_channelA0;
    //    PWM2A[i]=Volt_current.Volt_channelA1;
    //    PWM3A[i]=Volt_current.Volt_channelA2;
    //    PWM4A[i]=Volt_current.Volt_channelA3;
    //    PWM5A[i]=Volt_current.Volt_channelA4;
    //    PWM6A[i]=Volt_current.Volt_channelA5;
    //****测试程序结束****

    //	//****测试程序开始****
    //	Volt_current.Udc1=60;
    //	Volt_current.Udc2=60;
    //	Volt_current.Ia=0;
    //	Volt_current.Ib=0;
    //	Volt_current.Ic=0;
    //	Volt_current.Iu=0;
    //	Volt_current.Iv=0;
    //	Volt_current.Iw=0;
    //	Volt_current.Idc=0;
    //	Volt_current.TEMP1_1=0;
    //	Volt_current.TEMP1_2=0;
    //	Volt_current.TEMP2=0;
    //	//****测试程序结束****

    //故障检测
    //	prot.Udc1=Volt_current.Udc1;
    //	prot.Udc2=Volt_current.Udc2;
    prot.Ia=Volt_current.Ia;
    prot.Ib=Volt_current.Ib;
    prot.Ic=Volt_current.Ic;
    //	prot.Iu=Volt_current.Iu;
    //	prot.Iv=Volt_current.Iv;
    //	prot.Iw=Volt_current.Iw;
    //	prot.Idc=Volt_current.Idc;
    //	prot.Temp1_1=Volt_current.TEMP1_1;
    //	prot.Temp1_2=Volt_current.TEMP1_2;
    //	prot.Temp2=Volt_current.TEMP2;
    prot.calc(&prot);
    Fault_flag = prot.FaultState.bit.Faultstate;

    //将ABC UVW坐标系的电流变换到Alpha Beta  z1 z2坐标系，Clarke变换
    Iabc_to_Ialphabeta.As = Volt_current.Ia;
    Iabc_to_Ialphabeta.Bs = Volt_current.Ib;
    Iabc_to_Ialphabeta.Cs = Volt_current.Ic;
    Iabc_to_Ialphabeta.Us = 0;//Volt_current.Iu;
    Iabc_to_Ialphabeta.Vs = 0;//Volt_current.Iv;
    Iabc_to_Ialphabeta.Ws = 0;//Volt_current.Iw;
    Iabc_to_Ialphabeta.calc(&Iabc_to_Ialphabeta);

    //	 //----启动电机，并进行矢量闭环控制算法的实现-----------------------------------

    //	Pos_speed.calc(&Pos_speed); //读取当前转速
    Mech_speed_w = Volt_current.speed_mech; //计算机械角速度，单位rad/s
    Elec_speed_w = Mech_speed_w * p;

    //	//****测试程序开始****
    //	Ialphabeta_to_Idq.Ds=10;
    //	Ialphabeta_to_Idq.Qs=20;
    //	Elec_speed_w=9000*2*PI/60;
    //	//****测试程序结束****

    //****测试程序开始****
    //    PWM1A[i]=Elec_speed_w;
    //    PWM2A[i]=flux.Theta;
    //****测试程序结束****

    //将α β坐标系下的子电流转换到 d q(MT)坐标系，Park变换
    Ialphabeta_to_Idq1.Alpha = Iabc_to_Ialphabeta.Alpha1;
    Ialphabeta_to_Idq1.Beta = Iabc_to_Ialphabeta.Beta1;
    Ialphabeta_to_Idq1.Cos = cos(Volt_current.theta_elec);
    Ialphabeta_to_Idq1.Sin = sin(Volt_current.theta_elec);
    Ialphabeta_to_Idq1.calc(&Ialphabeta_to_Idq1);

    Ialphabeta_to_Idq2.Alpha = Iabc_to_Ialphabeta.Alpha2;
    Ialphabeta_to_Idq2.Beta = Iabc_to_Ialphabeta.Beta2;
    Ialphabeta_to_Idq2.Cos = cos(Volt_current.theta_elec);
    Ialphabeta_to_Idq2.Sin = sin(Volt_current.theta_elec);
    Ialphabeta_to_Idq2.calc(&Ialphabeta_to_Idq2);

//    if(Fault_flag==0)
//    {
        //Isd(Ism)调节PI
        A_Isd1_R.Give = 0;   //参考电流id计算常数，iq=Cd*flux，Cd=1/Lm
        A_Isd1_R.Feedback = Ialphabeta_to_Idq1.Ds;
        A_Isd1_R.calc(&A_Isd1_R);

        //Isq(Ist)调节PI
        A_Isq1_R.Give = currentref;	//参考电流iq计算常数，iq=Cq*Te/flux，Cq=Lr/(3*p*Lm)
        A_Isq1_R.Feedback = Ialphabeta_to_Idq1.Qs;
        A_Isq1_R.calc(&A_Isq1_R);

        //Isz1调节PI
        A_Isd2_R.Give = 0;  //谐波电流参考值为零
        A_Isd2_R.Feedback = Ialphabeta_to_Idq2.Ds;
        A_Isd2_R.calc(&A_Isd2_R);

        //Isz2调节PI
        A_Isq2_R.Give = 0 ;	//谐波电流参考值为零
        A_Isq2_R.Feedback = Ialphabeta_to_Idq2.Qs;
        A_Isq2_R.calc(&A_Isq2_R);

        //	     //测试程序开始
        //		A_Isd_R.Output =0 ;
        //		A_Isq_R.Output =50 ;
        //		al[i]=cos(i*1*PI/50);
        //		be[i]=sin(i*1*PI/50);
        //		Ialphabeta_to_Idq.Cos = al[i];
        //		Ialphabeta_to_Idq.Sin  = be[i];
        //		A_Isz1_R.Output =0 ;
        //		A_Isz2_R.Output =0 ;
        //	     //测试程序结束

        //开环程序
        //将d q(MT)坐标系下的电压给定转换到α β坐标系
        Udq_to_Ualphabeta1.Ds = 0;//A_Isd1_R.Output ;
        Udq_to_Ualphabeta1.Qs = 12;//A_Isq1_R.Output ;

        Udq_to_Ualphabeta1.Cos = cos(Elec_speed_w);
        Udq_to_Ualphabeta1.Sin = sin(Elec_speed_w);
        Udq_to_Ualphabeta1.calc(&Udq_to_Ualphabeta1);


        Udq_to_Ualphabeta2.Ds = A_Isd2_R.Output ;
        Udq_to_Ualphabeta2.Qs = A_Isq2_R.Output ;
        Udq_to_Ualphabeta2.Cos = cos(Elec_speed_w);
        Udq_to_Ualphabeta2.Sin = sin(Elec_speed_w);
        Udq_to_Ualphabeta2.calc(&Udq_to_Ualphabeta2);

        //----两电平逆变器的控制-----------------------------------------------------------
        //两电平SVPWM算法
        Svpwm_ABC.Ualpha = Udq_to_Ualphabeta1.Alpha; //输出uα1 5.019097822426848;//
        Svpwm_ABC.Ubeta = Udq_to_Ualphabeta1.Beta;  //输出uβ1 -1.344863208252080;//
        Svpwm_ABC.Vdc = 12;//Volt_current.VDC;  //通过AD模块测量的直流母线电压
        Svpwm_ABC.calc(&Svpwm_ABC);

        Svpwm_UVW.Ualpha = Udq_to_Ualphabeta2.Alpha; //输出uα2
        Svpwm_UVW.Ubeta = Udq_to_Ualphabeta2.Beta;  //输出uβ2
        Svpwm_UVW.Vdc = 12;//Volt_current.Udc2;  //通过AD模块测量的直流母线电压
        //	Svpwm_UVW.Vdc = 300;  //通过AD模块测量的直流母线电压
        Svpwm_UVW.calc(&Svpwm_UVW);

        //使用ePWM模块输出相应的PWM脉冲
        Epwm_modules.Duty1A = Svpwm_ABC.Tcmpa;
        Epwm_modules.Duty2A = Svpwm_ABC.Tcmpb;
        Epwm_modules.Duty3A = Svpwm_ABC.Tcmpc;
        Epwm_modules.Duty4A = 0;//Svpwm_UVW.Tcmpa;
        Epwm_modules.Duty5A = 0;//Svpwm_UVW.Tcmpb;
        Epwm_modules.Duty6A = 0;//Svpwm_UVW.Tcmpc;

        Epwm_modules.update(&Epwm_modules);

//   }
    //----逆变器控制算法完成-----------------------------------------------------------

    EPwm1Regs.ETCLR.bit.INT = 1; //清除中断标志位
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
}

//======== 函数定义===========================
//**********************************
/*
  @ Description: 外部中断1服务函数
  @ Param
  @ Return
 */
//**********************************
/*void xint1_isr()
{
    Enable_flag = 1;
    PieCtrlRegs.PIEACK.all|=PIEACK_GROUP1;       //清除中断标志位
}
*/

//**********************************
/*
  @ Description: 外部中断2服务函数
  @ Param
  @ Return
 */
//**********************************
/*
void xint2_isr()
{
    Enable_flag = 0;
    PieCtrlRegs.PIEACK.all|=PIEACK_GROUP1;       //清除中断标志位
}
*/

//**********************************
/*
  @ Description: 状态复位子函数
  @ Param
  @ Return
 */
//**********************************
//void clear_states()
//{
//
////	Volt_current = Volt_current_clear;
////	Pos_speed = Pos_speed_clear;
////	Epwm_modules = Epwm_modules_clear;
////
////	Iabc_to_Ialphabeta = Iabc_to_Ialphabeta_clear;
////	Ialphabeta_to_Idq = Ialphabeta_to_Idq_clear;
////	Udq_to_Ualphabeta = Udq_to_Ualphabeta_clear;
////	abz_to_ab12 = abz_to_ab12_clear;
////
////	A_Isd_R = A_Isd_R_clear;
////	A_Isq_R = A_Isq_R_clear;
////	A_Isz1_R = A_Isz1_R_clear;
////	A_Isz2_R = A_Isz2_R_clear;
////
////	flux = flux_clear;
////
////	Svpwm_ABC  = Svpwm_ABC_clear;
////	Svpwm_UVW = Svpwm_UVW_clear;
//
//}


//==============================================================
//End of file.
//==============================================================
