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.
39 lines
1.1 KiB
39 lines
1.1 KiB
#pragma once
|
|
#include "zbase.h"
|
|
|
|
typedef enum {
|
|
kxs_gpio_nopull, //
|
|
kxs_gpio_pullup, //
|
|
kxs_gpio_pulldown, //
|
|
kxs_gpio_od, //
|
|
} zaf_gpio_mode_t;
|
|
|
|
typedef enum { kxs_gpio_ain, kxs_gpio_input, kxs_gpio_output } zaf_gpio_type_t;
|
|
|
|
typedef enum {
|
|
kxs_gpio_no_irq,
|
|
kxs_gpio_rising_irq,
|
|
kxs_gpio_falling_irq,
|
|
kxs_gpio_rising_and_falling_irq,
|
|
} zaf_gpio_irq_t;
|
|
|
|
typedef struct {
|
|
Pin_t pin;
|
|
GPIO_TypeDef *gpio;
|
|
uint16_t pinoff;
|
|
zaf_gpio_mode_t mode;
|
|
zaf_gpio_type_t gpiotype;
|
|
zaf_gpio_irq_t irqtype;
|
|
bool mirror;
|
|
bool inited;
|
|
} zaf_gpio_t;
|
|
|
|
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);
|
|
void zaf_gpio_init_as_output(zaf_gpio_t *gpio, Pin_t pin, zaf_gpio_mode_t mode, bool mirror, bool initLevel);
|
|
bool zaf_gpio_read(zaf_gpio_t *gpio);
|
|
void zaf_gpio_write(zaf_gpio_t *gpio, bool level);
|
|
void zaf_gpio_toggle(zaf_gpio_t *gpio);
|
|
void zaf_enable_clock(Pin_t pin);
|
|
|
|
GPIO_TypeDef *chip_get_gpio(Pin_t pin);
|
|
int chip_get_pinoff(Pin_t pin);
|