zl程序教程

您现在的位置是:首页 >  .Net

当前栏目

ESP32 多线程入门实验

2023-02-18 16:30:03 时间

一、线程创建函数

函数 void xTaskCreate ( pdTASK_CODE pvTaskCode, const portCHAR * const pcNane, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask);
作用 创建线程
pvTaskCode 指向任务的实现函数的指针
pcNane 具有描述性的任务名。FreeRTOS 不会使用它。
usStackDepth 指定任务堆栈的大小
pvParameters 指针用于作为一个参数传向创建的任务
uxPriority 任务运行时的优先级
pvCreatedTask 用于传递任务的句柄,可以引用从而对任务进行其他操作

二、实验程序

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

#define TAG "main"


void task1(void *pvParameters)
{
    while (1)
    {
        vTaskDelay(1000);
        ESP_LOGI(TAG, "task1 running");
    }
}

void task2(void *pvParameters)
{
    while (1)
    {
        vTaskDelay(2000);
        ESP_LOGI(TAG, "task2 running");
    }
}

void app_main(void)
{

    xTaskCreate(task1, "task1", 2048, NULL, 1, NULL);
    xTaskCreate(task2, "task2", 2048, NULL, 1, NULL);


    while (1)
    {
        vTaskDelay(1000 / portTICK_PERIOD_MS);
        // ESP_LOGI(TAG, "task2 running");
    }
    
}