/* ***************************************** *******************************************/ #include \#include \#include \#include \#include \
#include \#include \
//===================================== u8 stgo; u16 m; u16 duty;
//===================================== void sys_int(void) {
u16 xx; for(xx=0;xx<63000;xx++); }
/**************************************** *main.c *
******************************************/ main() {
u16 ad3temp,over,twic, loop,gh;
CLK_CKDIVR=(0x00|0x00);// clock setup...... over=0; twic=0; _asm(\ duty=0; loop=0; Gpio_int(); PD4_OUT=0;
PWM_INIT(); ChangeDuty(0); BLDCParam.station=Idle; ReadHallGetStep(); NorChangePhase(); adc_init(); ADC_CR1_ADON = 1;
TIM1_CCER2_CC4E=1; TIM1_CCER2_CC4P =0; duty=0; while (1) { switch( BLDCParam.station) { case Idle: {
if(loop>50000) { loop=0; //if(ADC_DB2R<0x0100) // { PD4_OUT=1; duty=0; PC5_OUT =1; BLDCParam.station=Start;//Start; ///} adc_pwm_init(); } loop++;
} break; case Start: { if(loop>500) { loop=0;
if(duty<1020) duty++; } loop++; TIM1_CCER2_CC4E=1; TIM1_CCER2_CC4P =0; //============================= ChangeDuty(duty); M_Gethall_Check(); if(ADC_CSR_EOC ==1) { over+=ADC_DR; twic++; if(twic>5) { over=over/twic; if(over>400) { BLDCParam.station=Stop; break; } over=0; twic=0; } ADC_CSR_EOC = 0; // ADC_CR1_ADON = 1; } }break; case Run: { M_Gethall_Check();
if(ADC_CSR_EOC ==1) { ad3temp= ADC_DB3RL; } break; case Stop: {
ad3temp+= ADC_DB3RH<<8; m=ad3temp; if(loop>500) { loop=0; if(duty<700) duty++; if(duty>m+5&&duty>150) duty=duty-4; if(m<150) BLDCParam.station=Start; ChangeDuty(duty);//duty); } if(ADC_DB1RL>380) {BLDCParam.station=Stop;} //============================ ADC_CSR_EOC = 0; ADC_CR1_ADON = 1; ADC_CR1_ADON = 1; loop++; } DisAllPwmOut(); if(loop>50000) { loop=0; PC5_OUT =~PC5_OUT ; } loop++; } break;
}//===switch end==
}//while end==
}//===main end==

