当前位置: 首页 > 文档资料 > YoC 编程基础 >

LED 点灯例程

优质
小牛编辑
113浏览
2023-12-01

本文介绍如何使用YoC及GPIO接口,实现LED的闪烁功能。

本例程可以运行在CB2201开发板上。

3.1 应用初始化

应用入口函数为app_main,实现了板级的初始化和LED闪烁。

void main()
{
    /* 板级初始化 */
    board_yoc_init();
    LOGI(TAG, "led blink demo\n");

    int gpio_val = 0;

    /* LED闪烁 */
    while (1) {
        gpio_set(PA13, gpio_val);
        gpio_val ++;
        gpio_val %= 2;
        aos_msleep(500);
    }
}

3.2 板级初始化

板级初始化的入口为board_yoc_init,主要完成硬件初始化以及OS组件的初始化,由app_main函数调用。

void board_yoc_init(void)
{
    /* 初始化console驱动 */
#ifdef CONSOLE_ID
    console_init(CONSOLE_ID, 115200, 128);
#else
    console_init(0, 115200, 128);
#endif

    /* 初始化出厂配置Flash分区 */
    nvram_init("factory");

    /* 创建CLI任务 */
    utask_t *task = utask_new("at&cli", 2 * 1024, QUEUE_MSG_COUNT, AOS_DEFAULT_APP_PRI);
}

3.3 LED灯控制

static void gpio_set(int gpio_id /* 引脚名称 */, int val /* 电平 */)
{
    gpio_pin_handle_t     handle;

    /* 引脚复用 */
    drv_pinmux_config(gpio_id, PIN_FUNC_GPIO);
    handle = csi_gpio_pin_initialize(gpio_id, NULL);
    if (handle == NULL) {
        LOGI(TAG, "pin init\n");
        return;
    }

    /* 设置引脚的输出模式 */
    csi_gpio_pin_config_mode(handle, GPIO_MODE_PUSH_PULL);
    csi_gpio_pin_config_direction(handle, GPIO_DIRECTION_OUTPUT);

    /* 设置引脚的输出电平 */
    csi_gpio_pin_write(handle, val);

    csi_gpio_pin_uninitialize(handle);
}

烧写完成后,按复位键重启,LED灯开始闪烁,串口输出如下结果

boot1.1
Tee v2.0.1 Initliaze done, Dec 19 2018 11:44:54
Welcome to CLI...
> [     0.255946][I][app     ]led blink demo