虽然我拿到的小安派并没有led灯,但是作为一个点灯爱好者,肯定是要点一个灯,因此我们就需要学习使用gpio。BL616/BL618 系统架构如下所示
GPIO(General Purpose I/O Ports) 是通用输入/输出端口,用户可将其与外部硬件设备连接达到控制外部硬件设备的目的。
软件实现
详细代码请参考examples/peripherals/gpio/gpio_input_output
board_init();
board_init`中开启时钟
gpio = bflb_device_get_by_name("gpio");
bflb_gpio_init(gpio, GPIO_PIN_0, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
bflb_gpio_init(gpio, GPIO_PIN_1, GPIO_INPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
配置 GPIO 0 为 GPIO_OUTPUT 功能,GPIO 1 为 GPIO_INPUT 功能。
while (1)
{
bflb_gpio_set(gpio, GPIO_PIN_0);
printf("GPIO_PIN_1=%x\r\n", bflb_gpio_read(gpio, GPIO_PIN_1));
bflb_mtimer_delay_ms(2000);
bflb_gpio_reset(gpio, GPIO_PIN_0);
printf("GPIO_PIN_1=%x\r\n", bflb_gpio_read(gpio, GPIO_PIN_1));
bflb_mtimer_delay_ms(2000);
}
bflb_gpio_set(gpio, GPIO_PIN_0) 将 GPIO 0 引脚置位
bflb_gpio_read(gpio, GPIO_PIN_1) 读取 GPIO 1 引脚电平
bflb_gpio_reset(gpio, GPIO_PIN_0) 将 GPIO 0 引脚置 0
#include "bflb_gpio.h" //包含库文件
#include "board.h"
struct bflb_device_s *gpio;
int main(void)
{
board_init();//系统初始化配置
gpio = bflb_device_get_by_name("gpio");
printf("gpio output\r\n");
bflb_gpio_init(gpio, GPIO_PIN_0, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
bflb_gpio_init(gpio, GPIO_PIN_1, GPIO_INPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
while (1) {
bflb_gpio_set(gpio, GPIO_PIN_0);
printf("GPIO_PIN_1=%x\r\n", bflb_gpio_read(gpio, GPIO_PIN_1));
bflb_mtimer_delay_ms(2000);
bflb_gpio_reset(gpio, GPIO_PIN_0);
printf("GPIO_PIN_1=%x\r\n", bflb_gpio_read(gpio, GPIO_PIN_1));
bflb_mtimer_delay_ms(2000);
}
}