基于博流BL606P音视频开发板GPIO驱动RGB灯

描述

编辑语:

芯片开放社区(OCC)面向广大开发者推出应用实战系列内容,通过分享开发者实战开发案例,总结应用开发经验,梳理开发中的常见问题及解决方案,为后续参与的开发者提供更多参考与借鉴。

本文是关于开发者 zhanghui 基于BL606P-DVK开发板实战开发的系列文章中的第二篇,主要介绍了GPIO驱动RGB灯,后面还会持续更新该开发者的测评内容,敬请期待!

上篇编译开发板的例程后,不停的重启。下面是创建新的例程来测试下板卡上的RGBLED灯,来熟悉GPIO的使用。

01 创建项目例程

1.1 在welcome界面,选择新建工程

音视频

1.2 选择板卡的例程,创建工程

音视频

1.3 填写工程名,下载方案

音视频

1.4 创建的项目

音视频

02 程序

在上面创建的工程上修改要测试的例程

2.1 RGB端口硬件接口

RGB跳线对应的端口被JTAG占用,下面使用GPIO0~GPIO3来驱动。

JTAG占用的引脚。

音视频

音视频

使用下面引脚来驱动RGB 

2.2 led.c

 

#include 
#include 
#include 
#include "app_main.h"
#include 

#include 
#include 

gpio_dev_t ledr = { GPIO_PIN_0, OUTPUT_PUSH_PULL, NULL };
gpio_dev_t ledg= { GPIO_PIN_1, OUTPUT_PUSH_PULL, NULL };
gpio_dev_t ledb = { GPIO_PIN_2, OUTPUT_PUSH_PULL, NULL };

void init_led(void)
{
csi_pin_set_mux( GPIO_PIN_0, PIN_FUNC_GPIO);
csi_pin_set_mux( GPIO_PIN_1, PIN_FUNC_GPIO);
csi_pin_set_mux( GPIO_PIN_2, PIN_FUNC_GPIO);
//gpio0 = { 0, OUTPUT_PUSH_PULL, NULL };
//led0.port = GPIO_PIN_0;
hal_gpio_init(&ledr);
hal_gpio_init(&ledg);
hal_gpio_init(&ledb);

hal_gpio_output_low(&ledr);
hal_gpio_output_low(&ledg);
hal_gpio_output_low(&ledb);

}

void  set_ledr(void)
{
hal_gpio_output_high(&ledr);
}
void  set_ledg(void)
{
hal_gpio_output_high(&ledg);
}
void  set_ledb(void)
{
hal_gpio_output_high(&ledb);
}

void clr_ledr(void)
{
hal_gpio_output_low(&ledr);
}
void clr_ledg(void)
{
hal_gpio_output_low(&ledg);
}
void clr_ledb(void)
{
hal_gpio_output_low(&ledb);
}

void tog_ledr(void)
{
hal_gpio_output_toggle(&ledr);
}
void tog_ledg(void)
{
hal_gpio_output_toggle(&ledg);
}
void tog_ledb(void)
{
hal_gpio_output_toggle(&ledb);
}

 

2.3 led.h

 

#ifndef __LED_H__
#define __LED_H__

void init_led(void);
void  set_ledr(void);
void  set_ledg(void);
void  set_ledb(void);

void clr_ledr(void);
void clr_ledg(void);
void clr_ledb(void);

void tog_ledr(void);
void tog_ledg(void);
void tog_ledb(void);

#endif

 

2.4 main.c

 

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

#include 
#include 
#include 
#include "app_main.h"
#include 
#include "led.h"

int main(int argc, char *argv[])
{
int i=0;
    board_yoc_init();
init_led();
    
    printf("
app start core clock %d........
", soc_get_cur_cpu_freq());
    
    //codec_output_init();
    //codec_input_init();
    //codec_loop_init();
while(1)
{
set_ledr();
clr_ledg();
clr_ledb();
aos_msleep(500);

clr_ledr();
set_ledg();
clr_ledb();
aos_msleep(500);

clr_ledr();
clr_ledg();
set_ledb();
aos_msleep(500);

clr_ledr();
clr_ledg();
clr_ledb();
aos_msleep(500);
}
    return 0;
}

 

03 程序运行

RGB三色LED灯轮询点亮

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分