ESP8266 SDK 2.0 学习记录2

任务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);

}


版权声明:本文为cloudstep原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。