[经验分享] 【平头哥RVB2601开发板试用体验】 GPIO输出测试

TL-LED   2022-3-24 15:33 楼主

    搭建好开发环境后,先来测试下开发板的GPIO输出。

    一、硬件电路

    使用开发板上的LED灯来测试下GPIO的输出。

    硬件电路图

     001.png

002.png

    使用PA4,PA7,PA25端口来驱动LED灯。

 

    二、程序部分

    2.1、led.c

//led.c
#include "board_config.h"
#include "drv/gpio_pin.h"
#include <drv/pin.h>
#include <aos/aos.h>

csi_gpio_pin_t pin_ledr;
csi_gpio_pin_t pin_ledg;
csi_gpio_pin_t pin_ledb;

void led_init(void)
{
    csi_pin_set_mux(PA7, PIN_FUNC_GPIO); //led_r
	csi_pin_set_mux(PA25, PIN_FUNC_GPIO); //led_g
	csi_pin_set_mux(PA4, PIN_FUNC_GPIO); //led_b

	
	csi_gpio_pin_init(&pin_ledr, PA7);
    csi_gpio_pin_dir(&pin_ledr, GPIO_DIRECTION_OUTPUT);
	csi_gpio_pin_init(&pin_ledg, PA25);
    csi_gpio_pin_dir(&pin_ledg, GPIO_DIRECTION_OUTPUT);
	csi_gpio_pin_init(&pin_ledb, PA4);
    csi_gpio_pin_dir(&pin_ledb, GPIO_DIRECTION_OUTPUT);
	
	csi_gpio_pin_write(&pin_ledr, GPIO_PIN_HIGH);
	csi_gpio_pin_write(&pin_ledg, GPIO_PIN_HIGH);
	csi_gpio_pin_write(&pin_ledb, GPIO_PIN_HIGH);
}

void led_test(void)
{
	csi_gpio_pin_write(&pin_ledr, GPIO_PIN_LOW);
	csi_gpio_pin_write(&pin_ledg, GPIO_PIN_HIGH);
	csi_gpio_pin_write(&pin_ledb, GPIO_PIN_HIGH);
	aos_msleep(500);
	csi_gpio_pin_write(&pin_ledr, GPIO_PIN_HIGH);
	csi_gpio_pin_write(&pin_ledg, GPIO_PIN_LOW);
	csi_gpio_pin_write(&pin_ledb, GPIO_PIN_HIGH);
	aos_msleep(500);
	csi_gpio_pin_write(&pin_ledr, GPIO_PIN_HIGH);
	csi_gpio_pin_write(&pin_ledg, GPIO_PIN_HIGH);
	csi_gpio_pin_write(&pin_ledb, GPIO_PIN_LOW);
	aos_msleep(500);
	csi_gpio_pin_write(&pin_ledr, GPIO_PIN_HIGH);
	csi_gpio_pin_write(&pin_ledg, GPIO_PIN_HIGH);
	csi_gpio_pin_write(&pin_ledb, GPIO_PIN_HIGH);
	aos_msleep(500);
}

    2.2、led.h

#ifndef LED_H
#define LED_H

void led_init(void);
void led_test(void);

#endif

    2.3、main.c

/*
 * Copyright (C) 2019-2020 Alibaba Group Holding Limited
 */


#include <stdlib.h>
#include <string.h>
#include <aos/aos.h>
#include "aos/cli.h"
#include "main.h"
#include "app_init.h"
#include "oled.h"
#include "led.h"

#define TAG "app"

int main(void)
{
    board_yoc_init();
    LOGD(TAG, "%s\n", aos_get_app_version());
    oled_init();
	led_init();
    while (1) {
        LOGD(TAG, "Hello world! YoC");
        //aos_msleep(1000);
		led_test();
    }

    return 0;
}

    三、运行结果

    RBG LED灯轮询点亮。 001.gif

回复评论 (2)

下面准备测什么呢

点赞  2022-3-24 21:03
引用: 火辣西米秀 发表于 2022-3-24 21:03 下面准备测什么呢

测试下外部中断 ^_^

点赞  2022-3-25 09:37
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复