ESP8266 SDK 2.0 学习记录2

本文介绍如何在FreeRTOS环境下创建任务,实现板载LED灯每秒闪烁一次。通过控制GPIO2的高低电平切换,详细步骤包括添加GPIO驱动、初始化函数、新建任务及错误调试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

任务2:灯闪烁

说明: 在FreeRTOS里新建一个任务,让板载的灯1秒钟闪烁一次

任务分析:板载的灯是连接在GPIO2上的,因此只要控制GPIO2没1秒钟切换一次高低电平就可以了

我们在上机课的例程的基础上进行扩展,由于我们用到GPIO所以要把GPIO的驱动复制到程序目录下

打开user_main.c文件,添加头文件

新建一个初始化gpio的函数

添加led任务函数

在主函数中添加新建任务函数

打开虚拟机,切换到程序目录下

编译报错

用vim makefile编辑markfile文件

添加子文件夹

添加生成的文件

重新生成成功

10秒切换一次状态,忘记了vTaskDelay是10ms为单位的,1000就是10S

 

其他端口的控制:

//led初始化函数

void led_init(void)

{

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12); //

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13); //

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14); //

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_GPIO15); //

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);

 

    GPIO_OUTPUT_SET(12, 0);

    GPIO_OUTPUT_SET(13, 0);

    GPIO_OUTPUT_SET(14, 0);

    GPIO_OUTPUT_SET(15, 0);

 

    gpio16_output_conf();

    gpio_output_set(1);

}

void ATaskLed(void *pvParameters)

{

    

    int iVariableExample = 0;

 

    for(;;)

    {

        gpio16_output_set(1);

        printf("gpio16 High!");

        GPIO_OUTPUT_SET(0, 1);

        GPIO_OUTPUT_SET(2, 1);

        GPIO_OUTPUT_SET(4, 1);

        GPIO_OUTPUT_SET(5, 1);

        GPIO_OUTPUT_SET(12, 1);

        GPIO_OUTPUT_SET(13, 1);

        GPIO_OUTPUT_SET(14, 1);

        GPIO_OUTPUT_SET(15, 1);

        //gpio_set_high(2);

        vTaskDelay(100);

        gpio16_output_set(0);

        printf("gpio16 Low!");

        gpio_output_set(GPIO_ID_PIN(4), 0);

        //gpio_set_low(2);

        GPIO_OUTPUT_SET(0, 0);

        GPIO_OUTPUT_SET(2, 0);

        GPIO_OUTPUT_SET(4, 0);

        GPIO_OUTPUT_SET(5, 0);

        GPIO_OUTPUT_SET(12, 0);

        GPIO_OUTPUT_SET(13, 0);

        GPIO_OUTPUT_SET(14, 0);

        GPIO_OUTPUT_SET(15, 0);

        vTaskDelay(100);

    }

 

    vTaskDelete(NULL);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值