You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.1 KiB

12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
  1. #pragma once
  2. #include "zbase.h"
  3. typedef enum {
  4. kxs_gpio_nopull, //
  5. kxs_gpio_pullup, //
  6. kxs_gpio_pulldown, //
  7. kxs_gpio_od, //
  8. } zaf_gpio_mode_t;
  9. typedef enum { kxs_gpio_ain, kxs_gpio_input, kxs_gpio_output } zaf_gpio_type_t;
  10. typedef enum {
  11. kxs_gpio_no_irq,
  12. kxs_gpio_rising_irq,
  13. kxs_gpio_falling_irq,
  14. kxs_gpio_rising_and_falling_irq,
  15. } zaf_gpio_irq_t;
  16. typedef struct {
  17. Pin_t pin;
  18. GPIO_TypeDef *gpio;
  19. uint16_t pinoff;
  20. zaf_gpio_mode_t mode;
  21. zaf_gpio_type_t gpiotype;
  22. zaf_gpio_irq_t irqtype;
  23. bool mirror;
  24. bool inited;
  25. } zaf_gpio_t;
  26. void zaf_gpio_init_as_input(zaf_gpio_t *gpio, Pin_t pin, zaf_gpio_mode_t mode, zaf_gpio_irq_t irqtype, bool mirror);
  27. void zaf_gpio_init_as_output(zaf_gpio_t *gpio, Pin_t pin, zaf_gpio_mode_t mode, bool mirror, bool initLevel);
  28. bool zaf_gpio_read(zaf_gpio_t *gpio);
  29. void zaf_gpio_write(zaf_gpio_t *gpio, bool level);
  30. void zaf_gpio_toggle(zaf_gpio_t *gpio);
  31. void zaf_enable_clock(Pin_t pin);
  32. GPIO_TypeDef *chip_get_gpio(Pin_t pin);
  33. int chip_get_pinoff(Pin_t pin);