#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 6 uint8_t key_p1_pressed, key_p2_pressed; uint8_t key_p1_released, key_p2_released; 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}; uint8_t keyval,i; keyval = GetIOState(SIGID_KEY1); if (keyval == 1 && keyflag[KEY1] == 0) { keydelay[KEY1]++; if (keydelay[KEY1] > KEY_DELAY_TIME)//30ms { keyflag[KEY1] = 1; keydelay[KEY1] = KEY_DELAY_TIME; key_p1_pressed = 1; } } else if (keyval == 0) { if (keyflag[KEY1] == 1) { key_p1_released = 1; } key_p1_pressed = 0; keyflag[KEY1] = 0; keydelay[KEY1] = 0; } keyval = GetIOState(SIGID_KEY2); if (keyval == 1 && keyflag[KEY2] == 0) { keydelay[KEY2]++; if (keydelay[KEY2] > KEY_DELAY_TIME)//30ms { keyflag[KEY2] = 1; keydelay[KEY2] = KEY_DELAY_TIME; key_p2_pressed = 1; } } else if (keyval == 0) { if (keyflag[KEY2] == 1) { key_p2_released = 1; } key_p2_pressed = 0; keyflag[KEY2] = 0; keydelay[KEY2] = 0; } } 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; } }