Featured image of post ESP_Note

ESP_Note

2024版基于ESP-IDF的ESP32开发教程的学习笔记

环境搭建

环境搭建后第一段代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"

void taskA(void *pvParameter)
{
    while (1)
    {
        ESP_LOGI("main", "Task 1");
        vTaskDelay(pdMS_TO_TICKS(500));
    }
} 
void app_main(void)
{
// tskNO_AFFINITY 双核都可以运行
  xTaskCreatePinnedToCore(taskA, "taskA", 2048, NULL, 3, NULL, tskNO_AFFINITY);
}

main 是特殊的组件

image-14 image-15 image-16 image-17

任务同步

image-18

队列

image-19 image-3

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "esp_log.h"

QueueHandle_t Queue_handle = NULL;

typedef struct
{
  int a;
  int b;
} QueueMessage_t;
void taksA(void *pvParameter)
{
  QueueMessage_t message;
  message.a = 1;
  message.b = 2;
  while (1)
  {
    if (xQueueSend(Queue_handle, &message, 0) == pdTRUE)
    {
      ESP_LOGI("main", "Send success");
    }
    else
    {
      ESP_LOGE("main", "Send failed");
    }
    message.a++;
    message.b++;
    vTaskDelay(pdMS_TO_TICKS(500));
  }
}
void taksB(void *pvParameter)
{
  QueueMessage_t message;
  while (1)
  {
    if (pdTRUE == xQueueReceive(Queue_handle, &message, 0))
    {
      ESP_LOGI("main", "Receive success");
      ESP_LOGI("main", "a=%d, b=%d", message.a, message.b);
    }
    else
    {
      ESP_LOGE("main", "Receive failed");
    }
    vTaskDelay(pdMS_TO_TICKS(500));
  }
}
void app_main(void)
{
  Queue_handle = xQueueCreate(10, sizeof(QueueMessage_t));
  if (NULL == Queue_handle )
  {
    ESP_LOGE("main", "Queue create failed");
  }
  else
  {
    ESP_LOGI("main", "Queue create success");
  }
  xTaskCreatePinnedToCore(taksA, "taksA", 2048, NULL, 3, NULL, tskNO_AFFINITY);
  xTaskCreatePinnedToCore(taksB, "taksB", 2048, NULL, 3, NULL, tskNO_AFFINITY);
}

信号量

image-4

任务保护硬件机制 image-5

事件组

image-6

直达任务通知

image-7 image-9

原生区别

image-10

GPIO 操作

环境搭建

乐鑫官方文章 text image-11 image-12 text image-13

最后更新于 Mar 20, 2025 15:33 +0800
世界是你们
使用 Hugo 构建
主题 StackJimmy 设计