#include "pico/stdlib.h"
#include "hardware/gpio.h"
#define LED1_PIN 2
#define LED2_PIN 3
typedef struct {
int pin;
int interval;
int last_toggle_time;
} Task;
void toggle_led(Task *task) {
int current_time = to_ms_since_boot(get_absolute_time());
if (current_time - task->last_toggle_time >= task->interval) {
task->last_toggle_time = current_time;
gpio_xor_mask(1 << task->pin);
}
}
int main() {
gpio_init(LED1_PIN);
gpio_set_dir(LED1_PIN, GPIO_OUT);
gpio_init(LED2_PIN);
gpio_set_dir(LED2_PIN, GPIO_OUT);
Task tasks[] = {
{LED1_PIN, 1000, 0},
{LED2_PIN, 2000, 0}
};
while (true) {
for (int i = 0; i < sizeof(tasks) / sizeof(Task); i++) {
toggle_led(&tasks[i]);
}
sleep_us(1000); // Yield to other tasks
}
return 0;
}