1 | #include <Arduino.h> |
---|
2 | #include <freertos/timers.h> |
---|
3 | #define LED1 12 |
---|
4 | #define LED2 17 |
---|
5 | TimerHandle_t blinkTimer; |
---|
6 | TimerHandle_t serialTimer; |
---|
7 | void vBlink1Task(void * pvParameters){ |
---|
8 | |
---|
9 | while(true){ |
---|
10 | digitalWrite(LED1, !digitalRead(LED1)); |
---|
11 | vTaskDelay(1000 / portTICK_PERIOD_MS); |
---|
12 | } |
---|
13 | } |
---|
14 | void vBlink2Task(void *pvParameters){ |
---|
15 | while(true){ |
---|
16 | digitalWrite(LED2, !digitalRead(LED2)); |
---|
17 | vTaskDelay(100 / portTICK_PERIOD_MS); |
---|
18 | } |
---|
19 | } |
---|
20 | void vBlinkTimerCallback( TimerHandle_t xTimer ){ |
---|
21 | uint32_t id = ( uint32_t )pvTimerGetTimerID(xTimer); |
---|
22 | digitalWrite(2, LOW); |
---|
23 | vTaskDelay(200 / portTICK_PERIOD_MS); |
---|
24 | digitalWrite(2, HIGH); |
---|
25 | } |
---|
26 | void vSerialTimerCallack(TimerHandle_t xTimer){ |
---|
27 | Serial.println("Serial tick!"); |
---|
28 | } |
---|
29 | |
---|
30 | void setup(){ |
---|
31 | Serial.begin(115200); |
---|
32 | pinMode(2, OUTPUT); |
---|
33 | pinMode(LED1, OUTPUT); |
---|
34 | pinMode(LED2, OUTPUT); |
---|
35 | xTaskCreate(vBlink1Task, "vBlink1Task", 1024, NULL, tskIDLE_PRIORITY, NULL); |
---|
36 | xTaskCreate(vBlink2Task, "vBlink2Task", 1024, NULL, tskIDLE_PRIORITY+1, NULL); |
---|
37 | |
---|
38 | |
---|
39 | blinkTimer = xTimerCreate("blinkTimer", 9000, pdTRUE, (void*)0, vBlinkTimerCallback); |
---|
40 | serialTimer = xTimerCreate("serialTimer", 3000, pdTRUE, (void*)1, vSerialTimerCallack); |
---|
41 | |
---|
42 | if (xTimerStart(blinkTimer, 100) != pdPASS ){ |
---|
43 | Serial.println("Start blink timer failed!"); |
---|
44 | } |
---|
45 | if (xTimerStart(serialTimer, 100) != pdPASS ){ |
---|
46 | Serial.println("Start serial timer failed!"); |
---|
47 | } |
---|
48 | |
---|
49 | } |
---|
50 | |
---|
51 | void loop(){ } |
---|