发帖
6 0 0

小安派学习 GPIO学习

End
论坛元老

8

主题

97

回帖

4102

积分

论坛元老

积分
4102
小安派&M61基本系统教程 908 6 2023-10-17 21:24:26

虽然我拿到的小安派并没有led灯,但是作为一个点灯爱好者,肯定是要点一个灯,因此我们就需要学习使用gpio。BL616/BL618 系统架构如下所示

Snipaste_2023-10-17_21-16-09.jpg

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);
    }
}
──── 0人觉得很赞 ────

使用道具 举报

2023-10-17 22:25:23
为点灯工程师点赞
学习一下,谢谢分享
2023-10-18 08:34:13
学习~
2023-10-18 08:34:18
学习了
2023-10-18 13:20:24
感谢分享
2023-10-18 21:49:16
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28290 个
  • 话题数: 40267 篇