From 9d0b860e546dab0204f0ed01f50458748da743b3 Mon Sep 17 00:00:00 2001 From: yangjie Date: Fri, 11 Sep 2020 11:14:53 +0800 Subject: [PATCH] =?UTF-8?q?[components][driver/pin.c]pin=20=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=E5=A2=9E=E5=8A=A0=20rt=5Fpin=5Fget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/drivers/include/drivers/pin.h | 3 +++ components/drivers/misc/pin.c | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/components/drivers/include/drivers/pin.h b/components/drivers/include/drivers/pin.h index ca35407932..f5b2ded9f6 100644 --- a/components/drivers/include/drivers/pin.h +++ b/components/drivers/include/drivers/pin.h @@ -74,10 +74,13 @@ struct rt_pin_ops rt_uint32_t mode, void (*hdr)(void *args), void *args); rt_err_t (*pin_detach_irq)(struct rt_device *device, rt_int32_t pin); rt_err_t (*pin_irq_enable)(struct rt_device *device, rt_base_t pin, rt_uint32_t enabled); + rt_base_t (*pin_get)(const char *name); }; int rt_device_pin_register(const char *name, const struct rt_pin_ops *ops, void *user_data); +/* Get pin number by name,such as PA.0,P0.12 */ +rt_base_t rt_pin_get(const char *name); void rt_pin_mode(rt_base_t pin, rt_base_t mode); void rt_pin_write(rt_base_t pin, rt_base_t value); int rt_pin_read(rt_base_t pin); diff --git a/components/drivers/misc/pin.c b/components/drivers/misc/pin.c index aca58ee21b..2750f5105a 100644 --- a/components/drivers/misc/pin.c +++ b/components/drivers/misc/pin.c @@ -151,3 +151,18 @@ int rt_pin_read(rt_base_t pin) return _hw_pin.ops->pin_read(&_hw_pin.parent, pin); } FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_read, pinRead, read status from hardware pin); + +rt_base_t rt_pin_get(const char *name) +{ + RT_ASSERT(_hw_pin.ops != RT_NULL); + RT_ASSERT(name[0] == 'P'); + + if(_hw_pin.ops->pin_get == RT_NULL) + { + return -RT_ENOSYS; + } + + return _hw_pin.ops->pin_get(name); +} +FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_get, pinGet, get pin number from hardware pin); +