#include "r_cg_macrodriver.h" #include "appTask.h" #include "event.h" #include "r_cg_port.h" #include "r_cg_timer.h" #include "r_cg_wdt.h" #include "hwCtrl.h" #include "r_cg_adc.h" #include "r_cg_serial.h" #include "PINdef.h" #include "MotorCtrl.h" extern uint16_t g_AdVal[3]; void HardWare_Init(void) { //时基初始化 R_TAU0_Channel0_Start(); //AD 初始化 R_ADC_Start(); R_ADC_Set_OperationOn(); R_TAU0_Channel1_Start(); MOTOR1Ctrl(ACT_NOACT); MOTOR2Ctrl(ACT_NOACT); } void Variable_Init(void) { MotorValueInit(); } #define KEY1 0 #define KEY2 1 void keyLogic(uint8_t keyno) { switch (keyno) { case KEY1: setMotorState(0,ACT_XQ); break; case KEY2: setMotorState(0,ACT_XH); break; default: break; } } void keyLogicRelease(uint8_t keyno) { switch (keyno) { case KEY1: setMotorState(0,ACT_NOACT); break; case KEY2: setMotorState(0,ACT_NOACT); break; default: break; } } #define KEY_DELAY_TIME 60 void keyScan(void)//5ms { static uint16_t keydelay[9]={0,0,0,0,0,0,0,0,0}; static uint8_t keyflag[9]={0,0,0,0,0,0,0,0,0}; static uint8_t keep_count[9]={0,0,0,0,0,0,0,0,0}; static uint8_t KeyShort2Counter1,KeyShort2Counter2; static uint8_t KeyMode1 = 0,KeyMode2 = 0; uint8_t keyval,i; keyval = GetIOState(SIGID_KEY1); if (keyval == 1 && keyflag[KEY1] == 0) { keydelay[KEY1]++; if (keydelay[KEY1] > KEY_DELAY_TIME)//300ms { keyflag[KEY1] = 1; keydelay[KEY1] = KEY_DELAY_TIME; if (KeyMode1 == 0) { keyLogic(KEY1); KeyMode1 = 1; } else { keyLogic(KEY2); KeyMode1 = 0; } } setMotorState(1,ACT_NOACT); } else if (keyval == 0) { if (keyflag[KEY1] == 1) { keyLogicRelease(KEY1); } if (keydelay[KEY1] > 0 && keydelay[KEY1] < KEY_DELAY_TIME) { if (KeyShort2Counter1 == 0)//第一次按下 { KeyShort2Counter1 = 200;//1S } else { if (KeyMode2 == 0) { setMotorState(1,ACT_XQ); KeyMode2 = 1; } else { setMotorState(1,ACT_XH); KeyMode2 = 0; } } } keyflag[KEY1] = 0; keydelay[KEY1] = 0; } if (KeyShort2Counter1 > 0) { KeyShort2Counter1--; } if (KeyShort2Counter2 > 0) { KeyShort2Counter2--; } } void AppTask(void) { static uint8_t ledno = 1,last = 0; if (TimeBase1msFlag == 1) { TimeBase1msFlag = 0; CurrentDetecte(); } if (TimeBase5msFlag == 1) { TimeBase5msFlag = 0; keyScan(); } if (TimeBase10msFlag == 1) { TimeBase10msFlag = 0; MotorCtrl(); } if (TimeBase100msFlag == 1) { TimeBase100msFlag = 0; R_WDT_Restart(); } if (TimeBase1000msFlag == 1) { TimeBase1000msFlag = 0; } }