#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
//#include <Adafruit_SSD1306.h>
#if CONFIG_FREERTOS_UNICORE
#define ARDUINO_RUNNING_CORE 0
#else
#define ARDUINO_RUNNING_CORE 1
#endif
#define BTN_PIN 5
#define LED_RED 1
#define LED_BLUE 4
#define LED_GREEN 0
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
int days = 0;
int hours = 0;
int minutes = 0;
int seconds = 0;
//创建任务函数F
void Task1(void *pvParameters);
void Task2(void *pvParameters);
/*
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void print_line(String text, int column, int row, int text_size){
display.setTextSize(text_size);
display.setTextColor(SSD1306_WHITE);
display.setCursor(column,row);
display.println(text);
display.display();
}
void print_time_now(){
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(String(days));
display.setCursor(20,0);
display.println(":");
display.setCursor(30,0);
display.println(String(hours));
display.setCursor(50,0);
display.println(":");
display.setCursor(60,0);
display.println(String(minutes));
display.setCursor(80,0);
display.println(":");
display.setCursor(90,0);
display.println(String(seconds));
display.display();
}
void update_time(){
seconds += 1;
if(seconds>=60){
minutes += 1;
seconds = 0;
}
if(minutes == 60){
hours +=1 ;
minutes = 0;
}
if(hours == 24){
days += 1;
hours = 0;
}
}
*/
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(BTN_PIN, INPUT_PULLUP);
pinMode(LED_RED, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
//display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
//display.clearDisplay();
//Wire.begin();
xTaskCreatePinnedToCore(
Task1, "Task1" // 任务名称
,
1024 // 任务栈大小
,
NULL // 任务参数指针
,
2 // 任务优先级大小 -- 值越大优先级越大
,
NULL // 任务句柄指针
,
ARDUINO_RUNNING_CORE); // 处理器核心编号
xTaskCreatePinnedToCore(
Task2, "Task2" // 任务名称
,
1024 // 任务栈大小
,
NULL // 任务参数指针
,
1 // 任务优先级大小 -- 值越大优先级越大
,
NULL // 任务句柄指针
,
ARDUINO_RUNNING_CORE); // 处理器核心编号
}
void loop() {
// 空闲
Serial.println("loop");
//print_time_now();
delay(100);
}
void Task1(void *pvParameters) { // 任务1
for (;;) {
//
Serial.println("task1");
digitalWrite(LED_RED, HIGH);
vTaskDelay(pdMS_TO_TICKS(1000));
digitalWrite(LED_RED, LOW);
vTaskDelay(pdMS_TO_TICKS(1000));
if (digitalRead(BTN_PIN) == LOW) {
Serial.println("GPIO_BTN is LOW. Deleting task...");
vTaskDelete(NULL); // 删除当前任务
}
}
}
void Task2(void *pvParameters) { // 任务2
for (;;) {
Serial.println("task2");
vTaskDelay(pdMS_TO_TICKS(1000));
//update_time();
}
}
Loading
ssd1306
ssd1306