From bed34d48c7e2a5e019af3a567d4de3b47702c4dc Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 24 Aug 2024 14:39:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=A4=E4=B8=AAgpio?= =?UTF-8?q?=E8=BE=85=E5=8A=A9=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- basic/zgpio.c | 11 +++++++++-- basic/zgpio.h | 35 +++++++++++++++++++---------------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/basic/zgpio.c b/basic/zgpio.c index 57c9557..e4ba924 100644 --- a/basic/zgpio.c +++ b/basic/zgpio.c @@ -1,6 +1,7 @@ #include "zgpio.h" -#include "zlog.h" + #include "zdelay.h" +#include "zlog.h" static bool gpio_enable_clock(GPIO_TypeDef *m_gpio) { #ifdef GPIOA @@ -308,6 +309,12 @@ void zaf_gpio_write(zaf_gpio_t *gpio, bool level) { } void zaf_gpio_toggle(zaf_gpio_t *gpio) { HAL_GPIO_TogglePin(gpio->gpio, gpio->pinoff); } +void zaf_enable_clock(Pin_t pin) { + GPIO_TypeDef *gpio = _chip_get_gpio(pin); + gpio_enable_clock(gpio); +} +GPIO_TypeDef *chip_get_gpio(Pin_t pin) { return _chip_get_gpio(pin); } +int chip_get_pinoff(Pin_t pin) { return _chip_get_pinoff(pin); } void EXTI0_IRQHandler() { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); } void EXTI1_IRQHandler() { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_1); } @@ -328,4 +335,4 @@ void EXTI15_10_IRQHandler(void) { HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13); HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14); HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15); -} \ No newline at end of file +} diff --git a/basic/zgpio.h b/basic/zgpio.h index 011b2b4..f9bf77b 100644 --- a/basic/zgpio.h +++ b/basic/zgpio.h @@ -1,36 +1,39 @@ #pragma once #include "zbase.h" - typedef enum { kxs_gpio_nopull, // kxs_gpio_pullup, // kxs_gpio_pulldown, // kxs_gpio_od, // -}zaf_gpio_mode_t; +} zaf_gpio_mode_t; -typedef enum { kxs_gpio_ain, kxs_gpio_input, kxs_gpio_output }zaf_gpio_type_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; +} 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; + 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); +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); \ No newline at end of file +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); \ No newline at end of file