#include "gpio.h"
#include "gpio.c"
int prgm_state = OFF;
typedef struct {
unsigned int period_ms;
unsigned int last_run;
void (*run)(void);
} task_t;
task_t tasks_r[] = {
{ 200, 0, task_led1 }, // 200 ms blink
{ 500, 0, task_led2 }, // 500 ms blink
{ 1000, 0, task_led3 }, // 1 second blink
};
#define TASK_COUNT (sizeof(tasks_r) / sizeof(tasks_r[0]))
void scheduler_run(void)
{
unsigned int now = millis();
for (int i = 0; i < TASK_COUNT; i++) {
if ((now - tasks_r[i].last_run) >= tasks_r[i].period_ms) {
tasks_r[i].last_run = now;
tasks_r[i].run();
}
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, STM32!");
}
int main() {
__asm volatile ("cpsie i");
gpio_init();
systick_init_1ms();
for(;;){
scheduler_run();
}
return 0;
}