基质喷涂
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.

46 lines
1.1 KiB

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