• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу