编辑语:
芯片开放社区(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灯轮询点亮
全部0条评论
快来发表一下你的评论吧 !