main.c 1.41 KiB
#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);