Моя проблема:
Я хочу передать параметры задаче 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 Что я пробовал: Я удалил другой экземпляр класса и вуаля, все работает. Но для меня это невозможно. Я также пытался изменить продолжительность задержки, но это не сработало.
Можете ли вы сказать, что я делаю не так? Пожалуйста, помогите мне.
Почему я получаю неверный параметр из задачи FreeRTOS в классе? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Code Irmote и Freertos для ESP32 работает с Arduino IDE, но не полностью с Platformio
Anonymous » » в форуме C++ - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-