Выбрал platformio как IDE, но не могу выбрать какой вариант С использовать: Frameworks 1. Arduino -->> Arduino Wiring-based Framework allows writing cross-platform software to control devices attached to a wide range of Arduino boards to create all kinds of creative coding, interactive objects, spaces or physical experiences 2. Espressif IoT Development Framework -->> ESP-IDF is the official development framework for the ESP32 and ESP32-S Series SoCs. Мне больше нравиться 1) потому что проще и я уже на нем работал, все легко, но проблема немогу найти списка всех функций которые используются в ESP32 (или микроконтроллерах), то есть "справочник языка". А вот по 2) есть официальное АПИ, но сам язык сложнее и нужно учить. Сейчас у меня вопросы по этому поводу: 1. Есть ли справочник языка ArduinoC со всеми функциями, например, узнать количество свободного места в РАМ, будет ли адекватная инфа в Си функциях? Да и вообще узнать что это за язык такой ArduinoC/C++ 2. Что лучше в плане поддержки библотек на датчики 3. Что лучше по оптимизации/быстродействии 4. ULP процессор можно на чем-то из этого программировать? И вообще его можно программировать или только здавать варианты пробуждения? 5. По аппаратной части есть разница, каким вариантом мы программируем?
для маленького проекта или чтобы втянуться сойдет. Есть встроенный менеджер библиотек, которые обсасывают в интернете. зайдите на амперка вики, ардуино.ру или ардуино.сс. По мне слишком много недоговорок, но прочитать полезно. фрейморком от эспрессив не пользовался, но см. выше про менеджер библиотек
Спасибо https://www.arduino.cc/reference/en/ - тут был и для ардуино все понятно. Становится "не понятно" для ESP32, тут больше железной обвязки и по идее должно быть больше функций, часть функций заменена, теже задачи для разных ядер - это все искать по одному примеру, но полного списка я не могу найти
никаких вариантов у языка Си нет. Есть стандарты, но они абсолютно самостоятельны. Чтобы изучить Си, необходимо прочитать учебник по этому языку. Например, Кернигана и Ричи.
это будет план Б, пока ищу для АрдуиноС++ мануал полный. Уже есть описания части функций и продолжаю копать
какой "полный мануал" Вы ищете? Паровоз правильно сказал - нет никакого С++ для ардуино. Все функции, что вы знаете для ардуино - это все методы каких-то библиотек. Библиотек - тысячи. Библиотеку может написать и выложить в сеть кто угодно. любой пользователь. я сам написал несколько... Поэтому нет и не может быть "полного списка всех функций ардуино". не занимайтесь ерундой, учите просто С++ по учебнику. а не какой-то там "С для ардуино" или "С++ для ЕСП32"
Вот что накопал, только без описаний Код (C++): void EspClass::deepSleep(uint32_t time_us) { esp_deep_sleep(time_us); } void EspClass::restart(void) { esp_restart(); } uint32_t EspClass::getHeapSize(void) { multi_heap_info_t info; heap_caps_get_info(&info, MALLOC_CAP_INTERNAL); return info.total_free_bytes + info.total_allocated_bytes; } uint32_t EspClass::getFreeHeap(void) { return heap_caps_get_free_size(MALLOC_CAP_INTERNAL); } uint32_t EspClass::getMinFreeHeap(void) { return heap_caps_get_minimum_free_size(MALLOC_CAP_INTERNAL); } uint32_t EspClass::getMaxAllocHeap(void) { return heap_caps_get_largest_free_block(MALLOC_CAP_INTERNAL); } FlashMode_t EspClass::getFlashChipMode(void) { esp_image_header_t fhdr; if(flashRead(0x1000, (uint32_t*)&fhdr, sizeof(esp_image_header_t)) && fhdr.magic != ESP_IMAGE_HEADER_MAGIC) { return FM_UNKNOWN; } return magicFlashChipMode(fhdr.spi_mode); } uint32_t EspClass::magicFlashChipSize(uint8_t byte) { switch(byte & 0x0F) { case 0x0: // 8 MBit (1MB) return (1_MB); case 0x1: // 16 MBit (2MB) return (2_MB); case 0x2: // 32 MBit (4MB) return (4_MB); case 0x3: // 64 MBit (8MB) return (8_MB); case 0x4: // 128 MBit (16MB) return (16_MB); default: // fail? return 0; } } uint32_t EspClass::magicFlashChipSpeed(uint8_t byte) { switch(byte & 0x0F) { case 0x0: // 40 MHz return (40_MHz); case 0x1: // 26 MHz return (26_MHz); case 0x2: // 20 MHz return (20_MHz); case 0xf: // 80 MHz return (80_MHz); default: // fail? return 0; } }
А вообще, как уже писал выше - все эти функции это ровно такие же библиотеки с исходным кодом. как и любые другие Вот. например, исходники для поддержки ЕСП8266 в среде Ардуино: https://github.com/esp8266/Arduino
Ну такое Описаний же нет, толку не много Я примерно этоже и нашел только в коде https://github.com/espressif/arduino-esp32/blob/master/cores/esp32/Esp.cpp но как и в вашем случае это уже для тех кто разбирается, а не для новичков
для новичков учебник. Сколько раз говорить? Программированию учатся 2-3 года, а не пару дней отсидки на форумах.
есть исходник, в нем комментраии - изучайте. А подробного описания может и вовсе не быть - это же открытое ПО. захотел автор - сделал документацию, а поленился или времени не хватило - пользуйте как есть.
та да еще раз, по Си от Керниган и Ричи вопросов нету, у меня даже бумажный справочник есть Вопрос по прослойке/фрейворку/АрдуиноС++. Например, в АрдуиноС для ESP32 есть функция restart(), но этой функции нет у Си Керниган и Ричи. Вот у меня запрос конкретно по вот таким функциям, список этих функций и описание. Таже deepSleep() - эта функция специфична только для ArduinoC++, а вы меня второй раз тыкаете в Кернигана Ричи, ну нет там таких функций
Тебе уже который раз тычут что не существует никаких ArduinoC++. Все эти функции самописные и нет никаких официальных справочников по таким функциям. По крайне мере пока не найдется какой-нибудь энтузиаст и соберет их все в кучу. Если не можешь с ними разобраться самостоятельно - ищи автора и спрашивай у него.
чушь. Это просто функция. нету, потому как функция restart написана на языке Си, а не является функцией языка. Если эту разницу не уяснить, то в программировании делать нечего. Впрочем, эта же функция может быть написана на любом другом языке, скомпилирована и на этапе сборки бинарника к ему прилинкована. Собственно, так и сделано на ESP8266. На ESP32 не знаю, но по ходу пьесы также. Программирование таких SoC, как ESP и ему подобных, совсем не для новичков. Мало того, там необходимо ещё и WEB технологии подтянуть.