From 9af2db092efa3f5760abff39292e76f4559ee307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8B=A4=E4=B8=BA=E6=9C=AC?= <1207280597@qq.com> Date: Fri, 24 Nov 2017 17:16:42 +0800 Subject: [PATCH] =?UTF-8?q?[BSP][ls1c]=E6=96=B0=E5=A2=9EPIN=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=20=E5=B0=86=E9=BE=99=E8=8A=AF1c=E5=BA=93=E4=B8=AD?= =?UTF-8?q?=E7=9A=84gpio=E6=8E=A5=E5=8F=A3=E9=87=8D=E6=96=B0=E5=B0=81?= =?UTF-8?q?=E8=A3=85=E4=B8=BARTT=E7=BB=9F=E4=B8=80=E6=A0=87=E5=87=86?= =?UTF-8?q?=E7=9A=84pin=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/ls1cdev/drivers/drv_gpio.c | 97 ++++++++++++++++++++++++++++++++++ bsp/ls1cdev/drivers/drv_gpio.h | 33 ++++++++++++ bsp/ls1cdev/rtconfig.h | 3 ++ 3 files changed, 133 insertions(+) create mode 100644 bsp/ls1cdev/drivers/drv_gpio.c create mode 100644 bsp/ls1cdev/drivers/drv_gpio.h diff --git a/bsp/ls1cdev/drivers/drv_gpio.c b/bsp/ls1cdev/drivers/drv_gpio.c new file mode 100644 index 0000000000..28af13385d --- /dev/null +++ b/bsp/ls1cdev/drivers/drv_gpio.c @@ -0,0 +1,97 @@ +/* + * File : drv_gpio.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2012, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: + * Date Author Notes + * 2017-11-24 ÇÚΪ±¾ first version + */ + +#include +#include +#include "../libraries/ls1c_gpio.h" + + +void ls1c_pin_mode(struct rt_device *device, rt_base_t pin, rt_base_t mode) +{ + unsigned int gpio = pin; + + if (PIN_MODE_OUTPUT == mode) + { + gpio_init(gpio, gpio_mode_output); + } + else + { + gpio_init(gpio, gpio_mode_input); + } + + return ; +} + + +void ls1c_pin_write(struct rt_device *device, rt_base_t pin, rt_base_t value) +{ + unsigned int gpio = pin; + + if (PIN_LOW == value) + { + gpio_set(gpio, gpio_level_low); + } + else + { + gpio_set(gpio, gpio_level_high); + } + + return ; +} + + +int ls1c_pin_read(struct rt_device *device, rt_base_t pin) +{ + unsigned int gpio = pin; + int value = PIN_LOW; + + if (0 == gpio_get(gpio)) + { + value = PIN_LOW; + } + else + { + value = PIN_HIGH; + } + + return value; +} + + +const static struct rt_pin_ops _ls1c_pin_ops = +{ + ls1c_pin_mode, + ls1c_pin_write, + ls1c_pin_read, +}; + + +int hw_pin_init(void) +{ + rt_device_pin_register("pin", &_ls1c_pin_ops, RT_NULL); + return 0; +} +INIT_BOARD_EXPORT(hw_pin_init); + + diff --git a/bsp/ls1cdev/drivers/drv_gpio.h b/bsp/ls1cdev/drivers/drv_gpio.h new file mode 100644 index 0000000000..7657eb000f --- /dev/null +++ b/bsp/ls1cdev/drivers/drv_gpio.h @@ -0,0 +1,33 @@ +/* + * File : drv_gpio.h + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006 - 2012, RT-Thread Development Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Change Logs: + * Date Author Notes + * 2017-11-24 ÇÚΪ±¾ first version + */ + +#ifndef LS1C_DRV_GPIO_H +#define LS1C_DRV_GPIO_H + + +int hw_pin_init(void); + + +#endif + diff --git a/bsp/ls1cdev/rtconfig.h b/bsp/ls1cdev/rtconfig.h index 79cfc3e56e..117282ded0 100644 --- a/bsp/ls1cdev/rtconfig.h +++ b/bsp/ls1cdev/rtconfig.h @@ -235,6 +235,9 @@ #define RT_USING_I2C_BITOPS +#define RT_USING_PIN + + // #endif -- GitLab