#include "FU68xx_5.h" #include void VREFConfigInit(void) { #if (HW_ADC_VREF == VREF3_0) { SetBit(VREF_VHALF_CR, VRVSEL1); //00-->4.5V 01-->VDD5 ClrBit(VREF_VHALF_CR, VRVSEL0); //10-->3.0V 11-->4.0V } #elif (HW_ADC_VREF == VREF4_0) { SetBit(VREF_VHALF_CR, VRVSEL1); //00-->4.5V 01-->VDD5 SetBit(VREF_VHALF_CR, VRVSEL0); //10-->3.0V 11-->4.0V } #elif (HW_ADC_VREF == VREF4_5) { ClrBit(VREF_VHALF_CR, VRVSEL1); //00-->4.5V 01-->VDD5 ClrBit(VREF_VHALF_CR, VRVSEL0); //10-->3.0V 11-->4.0V } #elif (HW_ADC_VREF == VREF5_0) { ClrBit(VREF_VHALF_CR, VRVSEL1); //00-->4.5V 01-->VDD5 SetBit(VREF_VHALF_CR, VRVSEL0); //10-->3.0V 11-->4.0V } #endif #if (VREF_OUT_EN) SetBit(P3_AN, PIN5); SetBit(P3_OE, PIN5); #endif #if (VHALF_OUT_EN) SetBit(P3_AN, P32); #endif SetBit(VREF_VHALF_CR, VREFEN | VHALFEN); } void HardwareInit(void) { // 上电等待 uint16 PowerUpCnt = 0; for (PowerUpCnt = 0; PowerUpCnt < 10000; PowerUpCnt++) {}; // 参考电压初始化 VREFConfigInit(); // 外部中断初始化 预驱故障中断保护 PreDriverFalutInt(); GPIO_Init(); ADC_Init(); AMP_Init(); Driver_Init(); CMP3_Interrupt_Init(); SYST_ARR = 24000; SetBit(IP2, PSYSTICK0); SetBit(DRV_SR, SYSTIE); _nop_(); _nop_(); #if (PFCEnable==1)//PFC初始化 PFC_init(); #endif PI2_Init(); } /* --------------------------------------------------------------------------------- Function Name : void SoftwareInit(void) Description : 软件初始化,初始化所有定义变量,按键初始化扫描 Input : 无 Output : 无 ----------------------------------------------------------------------------------*/ void SoftwareInit(void) { memset(&mcFaultDect, 0, sizeof(FaultVarible)); // FaultVarible变量清零 /************保护次数*************/ memset(&mcProtectTime, 0, sizeof(ProtectVarible)); // ProtectVarible保护次数清零 /***********过流保护**************/ memset(&mcCurVarible, 0, sizeof(CurrentVarible)); // 电流保护的变量清零 memset(&Time, 0, sizeof(TIMERTypeDef)); memset(&PFCFaultDect, 0, sizeof(PFCFaultVarible)); memset(&ConTrolCmd, 0, sizeof(CONTROLCMDD)); /*****电机状态机时序变量***********/ McStaSet.SetMode = 0; /*************外部控制环************/ memset(&mcFocCtrl, 0, sizeof(FOCCTRL)); // mcFocCtrl变量清零 mcFocCtrl.mcDcbus_chazhi = 32760; /******ADC采样滤波值*********/ memset(&AdcSampleValue, 0, sizeof(ADCSample)); // ADCSample变量清零 /**************************电流偏置校准变量**********************/ memset(&mcCurOffset, 0, sizeof(CurrentOffset)); // mcCurOffset变量清零 mcCurOffset.IuOffsetSum = 16383; mcCurOffset.IvOffsetSum = 16383; mcCurOffset.Iw_busOffsetSum = 16383; /*****速度环的响应***/ memset(&mcSpeedRamp, 0, sizeof(MCRAMP)); // mcSpeedRamp变量清零 mcSpeedRamp.IncValue = Motor_Speed_Inc; mcSpeedRamp.DecValue = Motor_Speed_Dec; mcState = mcReady; mcFaultSource = 0; }