Почему я получаю неверный параметр из задачи FreeRTOS в классе?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему я получаю неверный параметр из задачи FreeRTOS в классе?

Сообщение Anonymous »

Моя проблема:
Я хочу передать параметры задаче FreeRTOS в классе. Я использую плату ESP32 с Arduino IDE. Я получаю 0,00 на выходе при попытке этого. Вот пример кода:

класс testClass { публика: testClass(/*параметры*/){ //Сделать что-нибудь... } частный: TaskHandle_t testTask; static void testTaskFunction (void * pvParameters) { float *number = (float *) pvParameters; Строка stringifiedNumber; stringifiedNumber = String(*number); Serial.println(stringifiedNumber); // Выход 2 Serial.println(*номер); // Вывод 3 vTaskDelete (NULL); // Должен быть там, иначе будет ошибка, потому что функция завершена, но задача все еще существует. Здесь задача удаляется и функция прерывается. } публика: void testFunction (число с плавающей запятой) { Serial.println(номер); // Выход 1 xTaskCreatePinnedToCore( testTaskFunction, // Функция реализации задачи "testTask", // Имя задачи 10000, // Размер стека прописью (void *) &number, // Входной параметр задачи 2, // Приоритет задачи &testTask, // Дескриптор задачи. 0); // Ядро, где должна выполняться задача } }; testClass testInstance1; testClass testInstance2; недействительная настройка() { // поместите сюда свой код установки для однократного запуска: Serial.begin(115200); } недействительный цикл() { // поместите сюда свой основной код для многократного запуска: for (float i = -20; i < 30; i += 0,1) { testInstance1.testFunction(i); задержка(1000); testInstance2.testFunction(я + 21); задержка(1000); } } Вывод (без комментариев):

ets 8 июня 2016 г. 00:22:57 первый: 0x1 (POWERON_RESET), загрузка: 0x13 (SPI_FAST_FLASH_BOOT) конфигурация: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 режим: DIO, часы дел: 1 нагрузка: 0x3fff0030, длина: 1416 нагрузка: 0x40078000, длина: 14804 нагрузка: 0x40080400, длина: 4 нагрузка: 0x40080404, длина: 3356 запись 0x4008059c -20.00 // Выход 1 (testInstance1) 0,00 // Выход 2 (testInstance1) 0,00 // Выход 3 (testInstance1) 1.00 // Выход 1 (testInstance2) 0,00 // Выход 2 (testInstance2) 0,00 // Выход 3 (testInstance2) -19,90 // ... 0,00 0,00 1.10 0,00 0,00 -19,80 0,00 0,00 1.20 0,00 0,00 -19,70 0,00 0,00 1.30 0,00 0,00 -19,60 0,00 0,00 1.40 0,00 0,00 -19.50 0,00 0,00 1,50 0,00 0,00 -19.40 0,00 0,00 1,60 0,00 0,00 -19.30 0,00 0,00 1,70 0,00 0,00 Что я пробовал: Я удалил другой экземпляр класса и вуаля, все работает. Но для меня это невозможно. Я также пытался изменить продолжительность задержки, но это не сработало.

Можете ли вы сказать, что я делаю не так? Пожалуйста, помогите мне.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Загрузка протекает ошибка трассировки стека Freertos
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Code Irmote и Freertos для ESP32 работает с Arduino IDE, но не полностью с Platformio
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • ESP32 LoadProhibibited с помощью Freertos задач
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • ESP32 LoadProhibibited с помощью Freertos задач
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Пытаюсь открыть модуль задачи, но получаю <BotError>Ошибка при обработке ответа на вызов: в ответе модуля задачи отсутст
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»