#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 "lin_user.h" #include "UARTLIN_Drv.h" #include "PINdef.h" static uint16_t keydelay[KEY_NUM]={0}; static uint8_t keyflag[KEY_NUM]={0}; void HardWare_Init(void) { IO_Init(); //时基初始化 R_TAU0_Channel0_Start(); OUT_BL_CTRL = 1; OUT_LINEN = 1; UARTLIN_Init(); } void Variable_Init(void) { uint8_t i=0; for (i = 0; i < KEY_NUM; i++) { keydelay[i] = 0; keyflag[i] = 0; } } void keyLogic(uint8_t keyno) { switch (keyno) { default: break; } } #define KEY_DELAY_TIME 6 void keyScan(void)//5ms { uint8_t keyval,i; for (i = 0; i < KEY_NUM; i++) { keyval = GetKeyState(i+1); if (keyval == 1 && keyflag[i] == 0) { keydelay[i]++; if (keydelay[i] > KEY_DELAY_TIME)//30ms { keyflag[i] = 1; keydelay[i] = KEY_DELAY_TIME; //keyLogic(i); } } else if (keyval == 0) { keyflag[i] = 0; keydelay[i] = 0; } } } uint8_t GetKeyFlag(uint8_t keyid) { if (keyid > 0 && keyid <= KEY_NUM) { return keyflag[keyid-1]?1:0; } else { return 0; } } extern uint8_t g_txbuf[8]; void TxMsgPro(void) { uint8_t temp1=0; temp1 |= GetKeyFlag(SIGID_KEY1)<<0; temp1 |= GetKeyFlag(SIGID_KEY2)<<1; temp1 |= GetKeyFlag(SIGID_KEY3)<<2; temp1 |= GetKeyFlag(SIGID_KEY4)<<3; g_txbuf[4] = temp1; } uint8_t fan_state,heat_state; void LED_Ctrl(void) { fan_state = (g_rxbuf[0]&0xc0)>>6; heat_state = (g_rxbuf[0]&0x30)>>4; FanLED_Ctrl(fan_state); HeatLED_Ctrl(heat_state); } void AppTask(void) { if (TimeBase5msFlag == 1) { TimeBase5msFlag = 0; keyScan(); TxMsgPro(); } if (TimeBase10msFlag == 1) { TimeBase10msFlag = 0; LED_Ctrl(); } if (TimeBase100msFlag == 1) { TimeBase100msFlag = 0; R_WDT_Restart(); } if (TimeBase1000msFlag == 1) { TimeBase1000msFlag = 0; } }