TaskHandle_t ReadHandle;
uint8_t value =0;
uint8_t limit_speed = 160;
void read_task(void *ptr){
TickType_t xLastWakeTime = xTaskGetTickCount();
while (1)
{
vTaskDelayUntil(&xLastWakeTime,1000);
uint8_t speed_kmph = (*(uint8_t *)ptr * limit_speed) / 255L;
Serial.print("当前时速(KM/H):");
Serial.print(speed_kmph);
if(speed_kmph != 0)
{
uint8_t speed_mps=speed_kmph*5/18; //kmph->mps
Serial.print(" KMPH转换成MPS:");
Serial.print(speed_mps);
float railjoint_Time = 25/(float)speed_mps;
Serial.print(" 轨间通过时间:");
Serial.println(railjoint_Time,5);
}
}
}
void set_task(void * ptr){
pinMode(2, INPUT);
while(1){
value=map(analogRead(2),0,4096,0,256);
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");
}