• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

freeRtos Idle Task hook adrduinoIDE

F86

New member
Приветствую, осваиваю rtos, столкнулся с косяками при подсовывании функции для фонового процесса
Решение не нашел на зарубежных ресурсах:(
C:\Users\fynjy\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/lib\libesp32.a(freertos_hooks.o): In function `esp_vApplicationIdleHook':
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/freertos_hooks.c:47:
multiple definition of `esp_vApplicationIdleHook'
не могу найти этот файл в системе(
тыкнете, плз, где копать.
 

aZholtikov

Active member
Сам же написал где находится...
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/freertos_hooks.c
В freertos_hooks.c содержится void esp_vApplicationIdleHook(void).
 

aZholtikov

Active member
А по поиску в Винде?
Как переводится "multiple definition"?
Вырезку из кода с esp_vApplicationIdleHook покажи.
 

F86

New member
Код:
static const char *pcTextForTask1 = "Task 1 is running ";
static const char *pcTextForTask2 = "Task 2 is running ";
long count = 0;
void vTaskFunction(void *pvParameters) {
  char *pcTaskName;
  pcTaskName = (char *)pvParameters;
  for (;;) {
    Serial.println(pcTaskName);
    vTaskDelay(250 / portTICK_RATE_MS);
  }
}

void setup() {
  Serial.begin(115200);
  xTaskCreate(vTaskFunction, "Task 1", 1000, (void *)pcTextForTask1, 1, NULL);
  xTaskCreate(vTaskFunction, "Task 2", 1000, (void *)pcTextForTask2, 2, NULL);
}

void loop() {
}

void vApplicationIdleHook( void ) {
        count++;                                                 
}
 

aZholtikov

Active member
И... Для использования ESP-IDF забудь о Arduino IDE.
Используй рекомендованные производителем системы. VSCode + Espressif IDF.
 

aZholtikov

Active member
static const char *pcTextForTask1 = "Task 1 is running ";
static const char *pcTextForTask2 = "Task 2 is running ";
long count = 0;
void vTaskFunction(void *pvParameters) {
char *pcTaskName;
pcTaskName = (char *)pvParameters;
for ( ; ; ) {
Serial.println(pcTaskName);
vTaskDelay(250 / portTICK_RATE_MS);
}
}
void setup() {
Serial.begin(115200);
xTaskCreate(vTaskFunction, "Task 1", 1000, (void *)pcTextForTask1, 1, NULL);
xTaskCreate(vTaskFunction, "Task 2", 1000, (void *)pcTextForTask2, 2, NULL);
}
void loop() {
}
void vApplicationIdleHook( void ) {
count++;
}
VOID
 
Сверху Снизу