-
leon authored0d403186
#include <stdio.h>
#include <stdint.h>
#include "board.h"
#include "periph/gpio.h"
#include "ztimer.h"
// typedef struct {
// uint8_t pressed_series;
// uint8_t blink_multiplier;
// } button_context_t;
//
// void timer_cb (void *arg) {
// button_context_t* ctx = (button_context_t*)arg;
// if (!gpio_read(BTN0_PIN)) {
// ++(ctx->pressed_series);
// }
// // gpio_toggle(LED0_PIN);
// // gpio_irq_enable(BTN0_PIN);
// }
//
// void button_irq_handler(void *arg) {
// static ztimer_t timer_handler = {
// .callback = timer_cb,
// .arg = arg
// };
//
// button_context_t* ctx = (button_context_t*)arg;
//
// // gpio_irq_disable(BTN0_PIN);
// ztimer_set(ZTIMER_USEC, &timer_handler, 200 * US_PER_MS);
// }
int main(void) {
// button_context_t ctx = {
// .pressed_series = 0,
// .blink_multiplier = 3
// };
uint8_t blink_cnt = 0;
uint8_t blink_cnt_lim = 10;
uint8_t press_cnt = 0;
gpio_init(LED0_PIN, GPIO_OUT);
gpio_init(BTN0_PIN, GPIO_IN_PU);
// gpio_init_int(BTN0_PIN, GPIO_IN_PU, GPIO_FALLING, button_irq_handler, &ctx);
for (;;) {
if (!gpio_read(BTN0_PIN)) {
++press_cnt;
} else {
press_cnt = 0;
}
if (press_cnt >= 20) {
blink_cnt_lim = blink_cnt_lim == 10 ? 30 : 10;
}
++blink_cnt;
if (blink_cnt > blink_cnt_lim) {
blink_cnt = 0;
gpio_toggle(LED0_PIN);
}
ztimer_sleep(ZTIMER_USEC, 100 * US_PER_MS);
}
}