使用VSCode创建第一个ESP-IDF项目

1.在VSCode中安装ESP-IDF:

在 VS Code 中安装 ESP-IDF: 在-VS-Code-中安装-ESP-IDF、新建项目
安装过程中可能会遇到的问题: 解决-pip-安装第三方包时因-SSL-报错_pip-ssl error

在完全使用VSCode安装ESP-IDF环境后,不会存在ESP-IDF Terminal,而只能在VSCode中使用。所以我们可以通过执行esp-idf安装路径下的export.bat脚本来导出环境变量。下面是在任意路径下创建ESP-IDF Terminalbat 脚本
CMD获取ESP-IDF安装路径: echo %IDF_PATH%

@echo off
set "startdir=%cd%"
start cmd.exe /K "cd %IDF_PATH% && export.bat && cd %startdir%"

bat脚本执行结果:
在这里插入图片描述

2. 创建第一个项目

创建项目 idf.py create-project [项目名称]
在这里插入图片描述

进入项目目录并使用VSCode打开项目
在这里插入图片描述

添加ESP-IDF配置文件夹
在这里插入图片描述
编写 void app_main(void) 函数

#include <stdio.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"

static SemaphoreHandle_t sync_task_1;
static SemaphoreHandle_t sync_task_2;
static SemaphoreHandle_t sync_task_3;

volatile int val = 5;

static void vTask1(void *pvParameters)
{
    xSemaphoreTake(sync_task_1, portMAX_DELAY);
    vTaskDelay(pdMS_TO_TICKS(10));

    for(;;)
    {
        printf("task 1 run with %d\r\n", val);
        val--;
        vTaskDelay(pdMS_TO_TICKS(500));
    }
}

static void vTask2(void *pvParameters)
{
    xSemaphoreTake(sync_task_2, portMAX_DELAY);
    vTaskDelay(pdMS_TO_TICKS(10));

    for(;;)
    {
        printf("task 2 run with %d\r\n", val);
        val++;
        vTaskDelay(pdMS_TO_TICKS(500));
    }
}

static void vTask3(void *pvParameters)
{
    xSemaphoreTake(sync_task_3, portMAX_DELAY);
    vTaskDelay(pdMS_TO_TICKS(10));

    for(;;)
    {
        printf("task 3 run\r\n");
        vTaskDelay(pdMS_TO_TICKS(500));
    }
}

void app_main()
{
    //Allow other core to finish initialization
    vTaskDelay(pdMS_TO_TICKS(100));
    UBaseType_t uxPriorityMain = uxTaskPriorityGet(NULL);
    
    //Create semaphores to synchronize
    sync_task_1 = xSemaphoreCreateBinary();
    sync_task_2 = xSemaphoreCreateBinary();
    sync_task_3 = xSemaphoreCreateBinary();
    
    // create task
    xTaskCreatePinnedToCore(vTask1, "task 1", 4096, NULL, uxPriorityMain + 1, NULL, tskNO_AFFINITY);
    xTaskCreatePinnedToCore(vTask2, "task 2", 4096, NULL, uxPriorityMain + 2, NULL, tskNO_AFFINITY);
    xTaskCreatePinnedToCore(vTask3, "task 3", 4096, NULL, uxPriorityMain + 3, NULL, tskNO_AFFINITY);
    
    // start task
    xSemaphoreGive(sync_task_3);
    xSemaphoreGive(sync_task_2);
    xSemaphoreGive(sync_task_1);
}

选择COM端口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行项目:按顺序执行build-->flash--->monitor,命令行:idf.py build--->idf.py -p [端口] flash--->idf.py -p [端口] monitor
在这里插入图片描述
选择调试方式
在这里插入图片描述
打开监视器(monitor)
在这里插入图片描述

其他:

  1. esp-idf-监视器乱码_the_hudashao的博客-CSDN博客
  2. 安装驱动CP2102驱动
  3. ESP-IDF官方文档
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值