2023-03-07 15:12:00 +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"
|
|
|
|
|
|
|
|
uint8_t g_rx_buf[3];
|
|
|
|
|
|
|
|
extern uint16_t g_AdVal[3];
|
|
|
|
|
|
|
|
|
|
|
|
void HardWare_Init(void)
|
|
|
|
{
|
2023-03-08 17:09:22 +08:00
|
|
|
//时基初始化
|
2023-03-07 15:12:00 +08:00
|
|
|
R_TAU0_Channel0_Start();
|
|
|
|
|
2023-03-08 17:09:22 +08:00
|
|
|
//LED初始化
|
2023-03-07 15:12:00 +08:00
|
|
|
|
2023-03-08 17:09:22 +08:00
|
|
|
|
|
|
|
//AD 初始化
|
2023-03-07 15:12:00 +08:00
|
|
|
R_ADC_Start();
|
|
|
|
R_ADC_Set_OperationOn();
|
|
|
|
R_TAU0_Channel1_Start();
|
|
|
|
|
2023-03-08 17:09:22 +08:00
|
|
|
//UART初始化
|
|
|
|
MotorCtrl(MOTOR_NOACT);
|
2023-03-07 15:12:00 +08:00
|
|
|
|
|
|
|
}
|
|
|
|
|
2023-03-08 17:09:22 +08:00
|
|
|
void Variable_Init(void)
|
2023-03-07 15:12:00 +08:00
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void keyLogic(uint8_t keyno)
|
|
|
|
{
|
|
|
|
switch (keyno)
|
|
|
|
{
|
2023-03-08 17:09:22 +08:00
|
|
|
case KEY_RESET:
|
|
|
|
MotorStart();
|
2023-03-07 15:12:00 +08:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#define KEY_DELAY_TIME 6
|
|
|
|
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;
|
|
|
|
for (i = 0; i < KEY_NUM; i++)
|
|
|
|
{
|
|
|
|
keyval = GetKeyState(i);
|
|
|
|
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);
|
|
|
|
keep_count[i] = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
else if (keyval == 0)
|
|
|
|
{
|
|
|
|
keyflag[i] = 0;
|
|
|
|
keydelay[i] = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void AppTask(void)
|
|
|
|
{
|
|
|
|
static uint8_t ledno = 1,last = 0;
|
|
|
|
if (TimeBase5msFlag == 1)
|
|
|
|
{
|
|
|
|
TimeBase5msFlag = 0;
|
|
|
|
keyScan();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (TimeBase10msFlag == 1)
|
|
|
|
{
|
|
|
|
TimeBase10msFlag = 0;
|
2023-03-08 17:09:22 +08:00
|
|
|
MotorTask();
|
2023-03-07 15:12:00 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
if (TimeBase100msFlag == 1)
|
|
|
|
{
|
|
|
|
TimeBase100msFlag = 0;
|
|
|
|
|
|
|
|
R_WDT_Restart();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (TimeBase1000msFlag == 1)
|
|
|
|
{
|
|
|
|
TimeBase1000msFlag = 0;
|
2023-03-08 17:09:22 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
uint8_t flagMotorStart;
|
|
|
|
uint8_t MotorState;
|
|
|
|
uint16_t MotorCounter;
|
|
|
|
#define MOTOR_IDLE 0
|
|
|
|
#define MOTOR_START 1
|
|
|
|
#define MOTOR_STEP1 2
|
|
|
|
#define MOTOR_STEP2 3
|
|
|
|
#define MOTOR_STEP3 4
|
|
|
|
#define MOTOR_STOP 5
|
|
|
|
void MotorStart(void)
|
|
|
|
{
|
|
|
|
flagMotorStart = 1;
|
|
|
|
}
|
|
|
|
const uint16_t MotorTimeArr[3] = {3000,3000,3000};
|
|
|
|
#define MOTOR_TASK_TIMEBASE 10
|
|
|
|
void MotorTask(void)//10ms
|
|
|
|
{
|
|
|
|
switch (MotorState)
|
|
|
|
{
|
|
|
|
case MOTOR_IDLE:
|
|
|
|
if (flagMotorStart == 1)
|
|
|
|
{
|
|
|
|
flagMotorStart = 0;
|
|
|
|
MotorState = MOTOR_START;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case MOTOR_START:
|
|
|
|
MotorCounter = 0;
|
|
|
|
MotorState = MOTOR_STEP1;
|
|
|
|
break;
|
|
|
|
case MOTOR_STEP1:
|
|
|
|
MotorCounter++;
|
|
|
|
if (MotorCounter*MOTOR_TASK_TIMEBASE > MotorTimeArr[0])
|
|
|
|
{
|
|
|
|
MotorCounter = 0;
|
|
|
|
MotorState++;
|
|
|
|
}
|
|
|
|
MotorCtrl(MOTOR_FZ);
|
|
|
|
/*
|
|
|
|
if (flagMotorStart == 1)
|
2023-03-07 15:12:00 +08:00
|
|
|
{
|
2023-03-08 17:09:22 +08:00
|
|
|
flagMotorStart = 0;
|
|
|
|
MotorState = MOTOR_STOP;
|
2023-03-07 15:12:00 +08:00
|
|
|
}
|
|
|
|
*/
|
2023-03-08 17:09:22 +08:00
|
|
|
break;
|
|
|
|
case MOTOR_STEP2:
|
|
|
|
MotorCounter++;
|
|
|
|
if (MotorCounter*MOTOR_TASK_TIMEBASE > MotorTimeArr[1])
|
|
|
|
{
|
|
|
|
MotorCounter = 0;
|
|
|
|
MotorState++;
|
|
|
|
}
|
|
|
|
MotorCtrl(MOTOR_NOACT);
|
|
|
|
/*
|
|
|
|
if (flagMotorStart == 1)
|
|
|
|
{
|
|
|
|
flagMotorStart = 0;
|
|
|
|
MotorState = MOTOR_STOP;
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
break;
|
|
|
|
case MOTOR_STEP3:
|
|
|
|
MotorCounter++;
|
|
|
|
if (MotorCounter*MOTOR_TASK_TIMEBASE > MotorTimeArr[2])
|
|
|
|
{
|
|
|
|
MotorCounter = 0;
|
|
|
|
MotorState++;
|
|
|
|
}
|
|
|
|
MotorCtrl(MOTOR_ZZ);
|
|
|
|
/*
|
|
|
|
if (flagMotorStart == 1)
|
|
|
|
{
|
|
|
|
flagMotorStart = 0;
|
|
|
|
MotorState = MOTOR_STOP;
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
break;
|
|
|
|
case MOTOR_STOP:
|
|
|
|
MotorCtrl(MOTOR_NOACT);
|
|
|
|
MotorState = MOTOR_IDLE;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
MotorState = MOTOR_STOP;
|
|
|
|
break;
|
2023-03-07 15:12:00 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|