发帖
8 0 0

【Ai-WB2-32S GPIO测试】

xu@xupt
中级会员

3

主题

5

回帖

353

积分

中级会员

积分
353
Ai-WB2系列 66 8 3 天前

一、开发环境搭建

官方已经给出详细教程,但是由于版本不一样存在差异。

具体参考: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)); // 短暂关闭延迟
    }
}


三、效果

image.png

──── 0人觉得很赞 ────

使用道具 举报

赞~👍
这个用vscode挺方便的,sdk可以直接打开
👍
前天 14:20

感谢认可
前天 18:41
HaydenHu 发表于 2025-3-31 00:46
这个用vscode挺方便的,sdk可以直接打开

VS CODE也是很不错滴
前天 18:42

感谢大佬的认可
前天 18:44

感谢大佬认可
您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28240 个
  • 话题数: 40187 篇