diff options
| author | xfwangqiang <[email protected]> | 2022-05-30 18:00:26 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-05-30 18:00:26 +0800 |
| commit | e8d775f888f14e4fe3cc7bd57740fda0caaf4ece (patch) | |
| tree | 9bc4bb197e278e971390de0ca04d5283774815c0 /bsp | |
| parent | 04a17d469a686282254f038f78d634a7420a1e0d (diff) | |
[componnets][pin]add pin operate command in MSH (#5892)
* 1. 在AT32的BSP的drv_gpio中增加了at32_pin_get函数,用于实现rt_pin_ops对象中的pin_get
2. 在MSH中增加了PIN的操作命令
3. 为了方便在MSH命令中解析字符串,增加了一些字符串相关的函数
Diffstat (limited to 'bsp')
| -rw-r--r-- | bsp/at32/libraries/rt_drivers/drv_gpio.c | 39 | ||||
| -rw-r--r-- | bsp/stm32/libraries/HAL_Drivers/drv_gpio.c | 1 |
2 files changed, 39 insertions, 1 deletions
diff --git a/bsp/at32/libraries/rt_drivers/drv_gpio.c b/bsp/at32/libraries/rt_drivers/drv_gpio.c index b4fa19408d..9417446367 100644 --- a/bsp/at32/libraries/rt_drivers/drv_gpio.c +++ b/bsp/at32/libraries/rt_drivers/drv_gpio.c @@ -102,6 +102,43 @@ static uint32_t pin_irq_enable_mask = 0; #define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) +static rt_base_t at32_pin_get(const char *name) +{ + rt_base_t pin = 0; + int hw_port_num, hw_pin_num = 0; + int i, name_len; + + name_len = rt_strlen(name); + + if ((name_len < 4) || (name_len >= 6)) + { + return -RT_EINVAL; + } + if ((name[0] != 'P') || (name[2] != '.')) + { + return -RT_EINVAL; + } + + if ((name[1] >= 'A') && (name[1] <= 'Z')) + { + hw_port_num = (int)(name[1] - 'A'); + } + else + { + return -RT_EINVAL; + } + + for (i = 3; i < name_len; i++) + { + hw_pin_num *= 10; + hw_pin_num += name[i] - '0'; + } + + pin = PIN_NUM(hw_port_num, hw_pin_num); + + return pin; +} + static void at32_pin_write(rt_device_t dev, rt_base_t pin, rt_base_t value) { gpio_type *gpio_port; @@ -423,7 +460,7 @@ const static struct rt_pin_ops _at32_pin_ops = at32_pin_attach_irq, at32_pin_dettach_irq, at32_pin_irq_enable, - RT_NULL, + at32_pin_get, }; rt_inline void pin_irq_handler(int irqno) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_gpio.c b/bsp/stm32/libraries/HAL_Drivers/drv_gpio.c index ee06f26003..b50819f579 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_gpio.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_gpio.c @@ -161,6 +161,7 @@ static uint32_t pin_irq_enable_mask = 0; #define ITEM_NUM(items) sizeof(items) / sizeof(items[0]) +/* e.g. PE.7 */ static rt_base_t stm32_pin_get(const char *name) { rt_base_t pin = 0; |
