【BL606P-DVK开发板】GPIO驱动RGB灯
[复制链接]
上篇编译开发板的例程后,不停的重启。下面是创建新的例程来测试下板卡上的RGBLED灯,来熟悉GPIO的使用。
一、创建项目例程
1.1、在welcome界面,选择新建工程
1.2、选择板卡的例程,创建工程
1.3、填写工程名,下载方案
1.4、创建的项目
二、程序
在上面创建的工程上修改要测试的例程
2.1、RGB端口硬件接口
RGB跳线对应个的端口被JTAG占用,下面使用GPIO0~GPIO3来驱动。
JTAG占用的引脚。
使用下面引脚来驱动RGB
2.2、led.c
#include <aos/aos.h>
#include <stdio.h>
#include <sys_clk.h>
#include "app_main.h"
#include <drv/gpio.h>
#include <aos/hal/gpio.h>
#include <drv/pin.h>
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 <aos/aos.h>
#include <stdio.h>
#include <sys_clk.h>
#include "app_main.h"
#include <drv/gpio.h>
#include "led.h"
int main(int argc, char *argv[])
{
int i=0;
board_yoc_init();
init_led();
printf("\r\napp start core clock %d........\r\n", 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;
}
三、程序运行
RGB三色LED灯轮询点亮
20221229_232516
|