1.灯GPIO控制原理
BL606带有3个灯的控制,下图是接线原理图。
2.编程
平头哥官网给出了GPIO口的控制例程,如下图
新建Led.c文件,以便控制led灯的亮灭。
代码如下:
/* 头文件包含 */
#include <aos/hal/gpio.h>
#include <drv/pin.h>
#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();
}
3.现象
RGB灯交替点亮。