Changes between Version 9 and Version 10 of ESP32


Ignore:
Timestamp:
06/12/21 09:50:45 (3 years ago)
Author:
krit
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ESP32

    v9 v10  
    6363}}}
    6464ลองมาดู code ตัวอย่างการสร้าง Task เพื่อความเข้าใจกันครับ โดยตัวอย่างนี้ เราจะเขียนโปรแกรมสร้าง Task ในบอร์ด ESP32 เพื่อปริ้นดูการทำงานของแต่ละ Task ผ่าน Serial port
     65{{{
     66
     67// สร้างตัวแปรเก็บค่า Tick ที่แปลงจากเวลาที่เป็น millisecond
     68const TickType_t xDelay2000ms = pdMS_TO_TICKS(2000);   
     69// สร้างตัวแปร TaskHandle สำหรับแต่ละ Task
     70TaskHandle_t Task1 = NULL;   
     71TaskHandle_t Task2 = NULL;
     72TaskHandle_t Task3 = NULL;
     73// สร้างตัวแปรเก็บค่าเป็น integer เพื่อเอาไปใช้ใน Task
     74int passValue = 0;
     75
     76void setup() {
     77  // เริ่มต้น Serial port เพื่อดูค่าที่แต่ละ Task ปริ้นออกมา
     78  Serial.begin(115200); 
     79  delay(1000); 
     80  // สร้าง Task1 โดยใช้ฟังก์ชัน func1_Task() พร้อมทั้งส่งผ่านค่าตัวแปร PassVale เข้าไปคำนวนใน Task
     81  xTaskCreatePinnedToCore(func1_Task,"Task1",1000,(void*) passValue,1,&Task1,0);
     82  // สร้าง Task2 โดยใช้ฟังก์ชัน func2_Task()
     83  xTaskCreatePinnedToCore(func2_Task,"Task2",1000,NULL,1,&Task2,0);
     84  // สร้าง Task3 โดยใช้ฟังก์ชัน func3_Task()
     85  xTaskCreatePinnedToCore(func3_Task,"Task3",1000,NULL,1,&Task3,0);
     86 
     87}
     88
     89void loop() {
     90
     91}
     92// funtion ที่ทำงานใน Task1
     93void func1_Task(void *pvvalue){
     94  int f1param = (int)pvvalue ;  //แปลงค่าตัวแปรที่ส่งผ่านมาเป็น Integer
     95  while(1){
     96      Serial.println(String("hello from Task1 : count >> ") + f1param );
     97      f1param++;
     98      vTaskDelay(xDelay2000ms);   // Delay Task นี้ 2 วินาที
     99    }   
     100  }
     101// funtion ที่ทำงานใน Task2
     102void func2_Task(void *pvParam){
     103    while(1){     
     104      Serial.println(String("hello from Task2"));       
     105      vTaskDelay(xDelay2000ms);   // Delay Task นี้ 2 วินาที
     106    }   
     107  }
     108// funtion ที่ทำงานใน Task3
     109void func3_Task(void *pvParam){
     110  while(1){
     111      Serial.println(String("hello from Task3"));
     112      vTaskDelay(xDelay2000ms);   // Delay Task นี้ 2 วินาที
     113    }   
     114  }
     115
     116}}}
    65117
    66118อธิบาย code ทีละส่วนกัน