编辑语:
芯片开放社区(OCC)面向广大开发者推出应用实战系列内容,通过分享开发者实战开发案例,总结应用开发经验,梳理开发中的常见问题及解决方案,为后续参与的开发者提供更多参考与借鉴。
本文是关于开发者 swzswz 基于BL606P-DVK开发板实战开发的系列文章中的一篇,主要介绍了GPIO点灯,后面还会持续更新社区开发者的测评内容,敬请期待!
01 灯GPIO控制原理
BL606带有3个灯的控制,下图是接线原理图。
02 过程
平头哥官网给出了GPIO口的控制例程,如下图
新建Led.c文件,以便控制led灯的亮灭。
代码如下:
/* 头文件包含 */ #include#include #include "app_main.h" void gpio_output_set(int port, int val) { /* GPIO 推挽输出模式设置 */ gpio_dev_t gpio = { 0, OUTPUT_PUSH_PULL, NULL }; /* 设置 pin 脚,与管脚复用设置一致 */ gpio.port = port; /* GPIO 初始化, 配置为输出模式 */ int ret = hal_gpio_init(&gpio); if (ret == 0) { if (val) { /* IO 输出高电平 */ ret = hal_gpio_output_high(&gpio); } else { /* IO 输出低电平 */ ret = hal_gpio_output_low(&gpio); } } /* GPIO 去初始化 */ hal_gpio_finalize(&gpio); }
main函数中实现预定义,定义灯与对应管脚的控制联系。
#define R_On()gpio_output_set(GPIO_PIN_17,1) #define R_Off()gpio_output_set(GPIO_PIN_17,0) #define G_On()gpio_output_set(GPIO_PIN_18,1) #define G_Off()gpio_output_set(GPIO_PIN_18,0) #define B_On()gpio_output_set(GPIO_PIN_19,1) #define B_Off()gpio_output_set(GPIO_PIN_19,0)
最后,设置rgb灯的切换逻辑。
while(1){ R_On(); aos_msleep(500); R_Off(); G_On(); aos_msleep(500); G_Off(); B_On(); aos_msleep(500); B_Off(); }
03 现象
RGB灯交替点亮。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !