2024-01-09 15:50:14 +08:00
|
|
|
#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];
|
|
|
|
uint8_t txbuf[10];
|
|
|
|
void TxTask(void);
|
|
|
|
void HardWare_Init(void)
|
|
|
|
{
|
|
|
|
//时基初始化
|
|
|
|
R_TAU0_Channel0_Start();
|
|
|
|
|
|
|
|
//UART初始化
|
|
|
|
R_UART0_Start();
|
|
|
|
|
|
|
|
//AD 初始化
|
|
|
|
R_ADC_Start();
|
|
|
|
R_ADC_Set_OperationOn();
|
|
|
|
R_TAU0_Channel1_Start();
|
|
|
|
|
|
|
|
//电机初始化
|
|
|
|
MotorValueInit();
|
|
|
|
MOTOR1Ctrl(ACT_NOACT);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void Variable_Init(void)
|
|
|
|
{
|
|
|
|
txbuf[0] = 0xaa;
|
|
|
|
txbuf[1] = 0x55;
|
|
|
|
}
|
|
|
|
#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;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2024-05-20 22:48:49 +08:00
|
|
|
#define KEY_DELAY_TIME_30ms 6
|
2024-01-10 16:48:16 +08:00
|
|
|
#define KEY_DELAY_TIME_200ms 60
|
2024-01-09 15:50:14 +08:00
|
|
|
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;
|
2024-01-10 16:48:16 +08:00
|
|
|
//向后
|
2024-01-09 15:50:14 +08:00
|
|
|
keyval = GetIOState(SIGID_KEY1);
|
2024-05-20 22:48:49 +08:00
|
|
|
if (keyval == 1 && keyflag[KEY1] == 0)//&& keyflag[KEY1] == 0
|
2024-01-09 15:50:14 +08:00
|
|
|
{
|
|
|
|
keydelay[KEY1]++;
|
2024-01-10 16:48:16 +08:00
|
|
|
if (keydelay[KEY1] > KEY_DELAY_TIME_200ms)//200ms
|
|
|
|
{
|
|
|
|
keyflag[KEY1] = 1;
|
|
|
|
keydelay[KEY1] = KEY_DELAY_TIME_200ms;
|
|
|
|
setMotorState(0,ACT_XQ);
|
|
|
|
}
|
2024-01-09 15:50:14 +08:00
|
|
|
}
|
|
|
|
else if (keyval == 0)
|
|
|
|
{
|
2024-05-20 22:48:49 +08:00
|
|
|
if (keydelay[KEY1]>KEY_DELAY_TIME_30ms && keydelay[KEY1] < KEY_DELAY_TIME_200ms)
|
2024-01-09 15:50:14 +08:00
|
|
|
{
|
2024-01-10 16:48:16 +08:00
|
|
|
//自动
|
|
|
|
setMotorAutoXH();
|
|
|
|
}
|
|
|
|
if (keyflag[KEY1] == 1 && keydelay[KEY1] >= KEY_DELAY_TIME_200ms)
|
|
|
|
{
|
|
|
|
setMotorState(0,ACT_NOACT);
|
2024-01-09 15:50:14 +08:00
|
|
|
}
|
|
|
|
keyflag[KEY1] = 0;
|
|
|
|
keydelay[KEY1] = 0;
|
|
|
|
|
|
|
|
}
|
2024-01-10 16:48:16 +08:00
|
|
|
//向前
|
2024-01-09 15:50:14 +08:00
|
|
|
keyval = GetIOState(SIGID_KEY2);
|
2024-05-20 22:48:49 +08:00
|
|
|
if (keyval == 1 && keyflag[KEY2] == 0)//&& keyflag[KEY2] == 0
|
2024-01-09 15:50:14 +08:00
|
|
|
{
|
|
|
|
keydelay[KEY2]++;
|
2024-01-10 16:48:16 +08:00
|
|
|
if (keydelay[KEY2] > KEY_DELAY_TIME_200ms)//200ms
|
|
|
|
{
|
|
|
|
keyflag[KEY2] = 1;
|
|
|
|
keydelay[KEY2] = KEY_DELAY_TIME_200ms;
|
|
|
|
setMotorState(0,ACT_XH);
|
2024-01-09 15:50:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
else if (keyval == 0)
|
|
|
|
{
|
2024-05-20 22:48:49 +08:00
|
|
|
if (keydelay[KEY2] > KEY_DELAY_TIME_30ms && keydelay[KEY2] < KEY_DELAY_TIME_200ms)
|
2024-01-10 16:48:16 +08:00
|
|
|
{
|
|
|
|
//自动
|
|
|
|
setMotorAutoXQ();
|
|
|
|
}
|
|
|
|
if (keyflag[KEY2] == 1 && keydelay[KEY2] >= KEY_DELAY_TIME_200ms)
|
2024-01-09 15:50:14 +08:00
|
|
|
{
|
2024-01-10 16:48:16 +08:00
|
|
|
setMotorState(0,ACT_NOACT);
|
2024-01-09 15:50:14 +08:00
|
|
|
}
|
|
|
|
keyflag[KEY2] = 0;
|
|
|
|
keydelay[KEY2] = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void AppTask(void)
|
|
|
|
{
|
|
|
|
static uint8_t ledno = 1,last = 0;
|
|
|
|
if (TimeBase1msFlag == 1)
|
|
|
|
{
|
|
|
|
TimeBase1msFlag = 0;
|
|
|
|
HallDetecte();
|
|
|
|
CurrentDetecte();
|
|
|
|
}
|
|
|
|
if (TimeBase5msFlag == 1)
|
|
|
|
{
|
|
|
|
TimeBase5msFlag = 0;
|
|
|
|
keyScan();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (TimeBase10msFlag == 1)
|
|
|
|
{
|
|
|
|
TimeBase10msFlag = 0;
|
|
|
|
MotorCtrl();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (TimeBase100msFlag == 1)
|
|
|
|
{
|
|
|
|
TimeBase100msFlag = 0;
|
|
|
|
TxTask();
|
|
|
|
R_WDT_Restart();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (TimeBase1000msFlag == 1)
|
|
|
|
{
|
|
|
|
TimeBase1000msFlag = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void TxTask(void)
|
|
|
|
{
|
|
|
|
uint16_t temp;
|
|
|
|
//txbuf[2] = GetIOState(SIGID_KEY1);
|
|
|
|
//txbuf[3] = GetIOState(SIGID_KEY2);
|
|
|
|
temp = getMotorLoc();
|
|
|
|
txbuf[2] = temp>>8;
|
|
|
|
txbuf[3] = temp&0xff;
|
|
|
|
txbuf[4] = GetIOState(SIGID_HALL1);
|
|
|
|
R_UART0_Send(txbuf,5);
|
|
|
|
}
|
|
|
|
|