TaskHandle_t ReadHandle;
uint8_t value =0;
typedef enum
{
VVVF_STATE = 0, //默认状态
VVVF_ACC1 = 1, // 加速1状态
VVVF_ACC2 = 2, // 加速2状态,Speed>gCV48_START_Th
VVVF_ACC3 = 3, // 加速3状态,Speed>gCV50_DECEL_Th
VVVF_ACC4 = 4, // 加速4状态,Speed>gCV49_CONST_Th
VVVF_DEC = 5, // 减速状态,Speed<gCV50_DECEL_Th
VVVF_BAK = 6, // 刹车状态,Speed<gCV47_BRAKE_Th
VVVF_STOP = 7, // 停车状态,Speed=0
} VVVF_State;
void read_task(void *ptr){
TickType_t xLastWakeTime = xTaskGetTickCount();
VVVF_State vvvf_state = VVVF_STATE;
while (1)
{
vTaskDelayUntil(&xLastWakeTime,100);
uint8_t VVVF_SPEED = *(uint8_t *)ptr;
switch (vvvf_state)
{
case VVVF_STATE:
Serial.println("进入STATE状态");
if (VVVF_SPEED > 0)
vvvf_state = VVVF_ACC1;
break;
case VVVF_ACC1:
Serial.println("进入ACC1状态");
if (VVVF_SPEED >=20)
vvvf_state = VVVF_ACC2;
break;
case VVVF_ACC2://开始加速音
Serial.println("进入ACC2状态,播放加速音");
if (VVVF_SPEED >= 170)
vvvf_state = VVVF_ACC3;
if (VVVF_SPEED >= 200)
{
Serial.println("ACC2跃ACC4?!");
vvvf_state = VVVF_ACC4;
}
break;
case VVVF_ACC3:
Serial.println("进入ACC3状态");
if (VVVF_SPEED <= 170)
vvvf_state = VVVF_DEC;
if (VVVF_SPEED >= 200)
vvvf_state = VVVF_ACC4;
break;
case VVVF_ACC4://开始恒速音
Serial.println("进入ACC4状态,播放恒速音");
if (VVVF_SPEED <= 170)
vvvf_state = VVVF_DEC;
break;
case VVVF_DEC://开始减速音
Serial.println("进入DEC状态,播放减速音");
if (VVVF_SPEED <= 24)
vvvf_state = VVVF_STOP;
break;
case VVVF_STOP:
Serial.println("进入STOP状态,播放停车音");
if (VVVF_SPEED < 5)
vvvf_state = VVVF_STATE;
break;
}
}
}
void set_task(void * ptr){
pinMode(2, INPUT);
while(1){
value=map(analogRead(2),0,4096,0,255);
vTaskDelay(100);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
xTaskCreate(set_task,"GIVE",1024,NULL,1,NULL);
xTaskCreate(read_task,"SHOW",1024,(void*)&value,1,&ReadHandle);
// Serial.println("Hello, ESP32!");
}
void loop() {
vTaskDelay(2000);
int waterMark = uxTaskGetStackHighWaterMark(ReadHandle);
Serial.print("Task Free Memory: ");
Serial.print(waterMark);
Serial.println(" Bytes");
Serial.print("Task Used Memory: ");
Serial.print(1024 - waterMark);
Serial.println(" Bytes");
}