Конфигурировать и использовать порты GPIO микроконтроллеров Bouffalo можно очень просто с помощью вызовов SDK.
Функции для управления портами GPIO (определены в bl_gpio.h):
int bl_gpio_enable_output(uint8_t pin, uint8_t pullup, uint8_t pulldown);
int bl_gpio_enable_input(uint8_t pin, uint8_t pullup, uint8_t pulldown);
int bl_gpio_output_set(uint8_t pin, uint8_t value);
int bl_gpio_input_get(uint8_t pin, uint8_t *value);
int bl_gpio_input_get_value(uint8_t pin);
int bl_gpio_int_clear(uint8_t gpioPin, uint8_t intClear);
void bl_gpio_intmask(uint8_t gpiopin, uint8_t mask);
void bl_set_gpio_intmod(uint8_t gpioPin, uint8_t intCtrlMod, uint8_t intTrgMod);
void bl_gpio_register(gpio_ctx_t *pstnode);
Эта функция настраивает ножку порта на вход:
int bl_gpio_enable_input(uint8_t pin, uint8_t pullup, uint8_t pulldown);
Параметр pin указывает номер ножки порта от 0 до 22 включительно. Например, для GPIO8 надо указать 8, или GLB_GPIO_PIN_8 (определено в перечислении GLB_GPIO_Type заголовка bl602_gpio.h). Параметры pullup и pulldown указывают включение подтяжки вверх и вниз соответственно (0 подтяжку выключает, 1 включает).
Эта функция настраивает ножку порта на выход:
int bl_gpio_enable_output(uint8_t pin, uint8_t pullup, uint8_t pulldown);
Управление выходом на примере микроконтроллера BL602:
#include < bl_gpio.h>
// С помощью осциллографа можно определить время, которое необходимо
// загрузчику для запуска приложения.
bl_gpio_enable_output(GLB_GPIO_PIN_8, 0, 0); // Настройка GPIO8 на выход
bl_gpio_output_set(GLB_GPIO_PIN_8, 1); // Перевод GPIO8 в лог. 1
Как считать уровень на ножке порта GPIO8:
int pinval = bl_gpio_input_get_value(GLB_GPIO_PIN_8);
if (pinval)
Beep(10);
[Ссылки]
1. BL602 IoT SDK configure GPIO site:pine64.github.io. |