Skip to content

Commit 9d0b860

Browse files
committed
[components][driver/pin.c]pin 框架增加 rt_pin_get
1 parent bb84e23 commit 9d0b860

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

components/drivers/include/drivers/pin.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,13 @@ struct rt_pin_ops
7474
rt_uint32_t mode, void (*hdr)(void *args), void *args);
7575
rt_err_t (*pin_detach_irq)(struct rt_device *device, rt_int32_t pin);
7676
rt_err_t (*pin_irq_enable)(struct rt_device *device, rt_base_t pin, rt_uint32_t enabled);
77+
rt_base_t (*pin_get)(const char *name);
7778
};
7879

7980
int rt_device_pin_register(const char *name, const struct rt_pin_ops *ops, void *user_data);
8081

82+
/* Get pin number by name,such as PA.0,P0.12 */
83+
rt_base_t rt_pin_get(const char *name);
8184
void rt_pin_mode(rt_base_t pin, rt_base_t mode);
8285
void rt_pin_write(rt_base_t pin, rt_base_t value);
8386
int rt_pin_read(rt_base_t pin);

components/drivers/misc/pin.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,3 +151,18 @@ int rt_pin_read(rt_base_t pin)
151151
return _hw_pin.ops->pin_read(&_hw_pin.parent, pin);
152152
}
153153
FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_read, pinRead, read status from hardware pin);
154+
155+
rt_base_t rt_pin_get(const char *name)
156+
{
157+
RT_ASSERT(_hw_pin.ops != RT_NULL);
158+
RT_ASSERT(name[0] == 'P');
159+
160+
if(_hw_pin.ops->pin_get == RT_NULL)
161+
{
162+
return -RT_ENOSYS;
163+
}
164+
165+
return _hw_pin.ops->pin_get(name);
166+
}
167+
FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_get, pinGet, get pin number from hardware pin);
168+

0 commit comments

Comments
 (0)