一、开发环境搭建
官方已经给出详细教程,但是由于版本不一样存在差异。
具体参考:https://blog.csdn.net/Boantong_/article/details/128480919
makefile问题参考:




二、程序
#include <stdio.h>
#include <string.h>
// 引入博流的GPIO库
#include "bl_gpio.h"
// 引入FreeRTOS库
#include <FreeRTOS.h>
#include <task.h>
// 定义LED的GPIO端口
#define RED_LED 14
#define GREEN_LED 17 // 绿色LED的实际GPIO端口号
#define BLUE_LED 3 // 蓝色LED的实际GPIO端口号
// 定义每个颜色状态的延迟时间(毫秒)
#define DELAY_MS 500
void main() {
// 初始延迟,等待系统稳定 (可选)
vTaskDelay(pdMS_TO_TICKS(1000));
// --- 初始化GPIO ---
// 为所有三个LED引脚启用输出模式
// 参数: (pin, 是否启用上拉, 是否启用下拉)
// 这里假设 1=启用上拉, 0=不启用下拉. 具体根据硬件设计调整.
printf("Initializing GPIOs...\r\n");
bl_gpio_enable_output(RED_LED, 1, 0);
bl_gpio_enable_output(GREEN_LED, 1, 0);
bl_gpio_enable_output(BLUE_LED, 1, 0);
// 确保所有LED初始状态为关闭 (假设低电平0为关闭, 高电平1为点亮)
// 如果你的硬件是高电平关闭,低电平点亮,则需要反转这里的 0 和 1
bl_gpio_output_set(RED_LED, 0); // 设置为0 (OFF)
bl_gpio_output_set(GREEN_LED, 0); // 设置为0 (OFF)
bl_gpio_output_set(BLUE_LED, 0); // 设置为0 (OFF)
printf("GPIOs Initialized. Starting LED pattern.\r\n");
// --- 花式电灯循环 ---
while (1) { // 无限循环
// 1. 红色 (Red)
printf("LED: Red\r\n");
bl_gpio_output_set(RED_LED, 1); // 红灯 ON
bl_gpio_output_set(GREEN_LED, 0); // 绿灯 OFF
bl_gpio_output_set(BLUE_LED, 0); // 蓝灯 OFF
vTaskDelay(pdMS_TO_TICKS(DELAY_MS)); // 延迟
// 2. 绿色 (Green)
printf("LED: Green\r\n");
bl_gpio_output_set(RED_LED, 0); // 红灯 OFF
bl_gpio_output_set(GREEN_LED, 1); // 绿灯 ON
bl_gpio_output_set(BLUE_LED, 0); // 蓝灯 OFF
vTaskDelay(pdMS_TO_TICKS(DELAY_MS)); // 延迟
// 3. 蓝色 (Blue)
printf("LED: Blue\r\n");
bl_gpio_output_set(RED_LED, 0); // 红灯 OFF
bl_gpio_output_set(GREEN_LED, 0); // 绿灯 OFF
bl_gpio_output_set(BLUE_LED, 1); // 蓝灯 ON
vTaskDelay(pdMS_TO_TICKS(DELAY_MS)); // 延迟
// 4. 黄色 (Yellow = Red + Green)
printf("LED: Yellow\r\n");
bl_gpio_output_set(RED_LED, 1); // 红灯 ON
bl_gpio_output_set(GREEN_LED, 1); // 绿灯 ON
bl_gpio_output_set(BLUE_LED, 0); // 蓝灯 OFF
vTaskDelay(pdMS_TO_TICKS(DELAY_MS)); // 延迟
// 5. 青色 (Cyan = Green + Blue)
printf("LED: Cyan\r\n");
bl_gpio_output_set(RED_LED, 0); // 红灯 OFF
bl_gpio_output_set(GREEN_LED, 1); // 绿灯 ON
bl_gpio_output_set(BLUE_LED, 1); // 蓝灯 ON
vTaskDelay(pdMS_TO_TICKS(DELAY_MS)); // 延迟
// 6. 紫色 (Magenta = Red + Blue)
printf("LED: Magenta\r\n");
bl_gpio_output_set(RED_LED, 1); // 红灯 ON
bl_gpio_output_set(GREEN_LED, 0); // 绿灯 OFF
bl_gpio_output_set(BLUE_LED, 1); // 蓝灯 ON
vTaskDelay(pdMS_TO_TICKS(DELAY_MS)); // 延迟
// 7. 白色 (White = Red + Green + Blue)
printf("LED: White\r\n");
bl_gpio_output_set(RED_LED, 1); // 红灯 ON
bl_gpio_output_set(GREEN_LED, 1); // 绿灯 ON
bl_gpio_output_set(BLUE_LED, 1); // 蓝灯 ON
vTaskDelay(pdMS_TO_TICKS(DELAY_MS)); // 延迟
// 8. 全部关闭 (可选,在循环开始前有一个短暂的灭灯状态)
printf("LED: Off\r\n");
bl_gpio_output_set(RED_LED, 0); // 红灯 OFF
bl_gpio_output_set(GREEN_LED, 0); // 绿灯 OFF
bl_gpio_output_set(BLUE_LED, 0); // 蓝灯 OFF
vTaskDelay(pdMS_TO_TICKS(DELAY_MS / 2)); // 短暂关闭延迟
}
}
三、效果
