Рецепты для Доски-H723
Рецепт — небольшой законченный модуль на C: recipes/<имя>/<имя>.c + .h и README
с объяснением, как он устроен. Рецепты проверены на плате, в README — настоящий вывод лога; исключение — i2c_bme280,
проверенный без датчика (см. его README).
Рецепты подключаются к основному проекту examples/BoardH723 без правки его кода.
| Рецепт | Что показывает |
|---|---|
| gpio_button | кнопка BOOT по прерыванию, подавление дребезга, светодиод |
| uart_dma | приём UART через DMA в кольцевой буфер, команды из терминала |
| i2c_bme280 | сканер шины I2C, датчик BME280/BMP280: температура, давление, влажность |
| wifi_http | подключение к Wi-Fi, HTTP GET на сокетах FreeRTOS+TCP |
| tcp_speed | скорость TCP по Wi-Fi: окна TCP, энергосбережение, клиент для ПК |
| sd_file | дозапись в файл на SD, замер скорости записи и чтения |
| rtos_queue | две задачи FreeRTOS и очередь между ними |
| lcd_ltdc | дисплей RGB 800×480: LTDC, DMA2D, двойной буфер в SDRAM, картинка с SD |
| lvgl_demo | интерфейс на LVGL 9: сенсорный экран GT911, графики, русский шрифт TTF с SD |
| lvgl_clock | часы (NTP) и погода (open-meteo) на LVGL, анимация пузырей; Wi-Fi и город — в файле на SD |
Как включить
Заголовок раздела «Как включить»Список рецептов через ; в опции H723_RECIPES:
cd examples/BoardH723cmake --preset Release -DH723_RECIPES="gpio_button;sd_file"cmake --build build/Releasepython ../../tools/dfu_flash.pyCMake добавляет в сборку все .c из папок рецептов и генерирует build/Release/recipes_start.c,
который вызывает <имя>_start() каждого рецепта. appTask (app/app.c) вызывает его, когда
уже работают USB-сеть, SDRAM, ESP32-C2, SD-карта, Lua и SSH. Выключить рецепты —
-DH723_RECIPES="".
Рецепты не зависят от Lua и работают в прошивке без него (-DH723_WITH_LUA=OFF); только
wifi_http, tcp_speed и lvgl_clock тогда подключаются к сети сами — имя и пароль задаются в
wifi_http.h, опциями -DTCP_SPEED_SSID/-DTCP_SPEED_PASSWORD и в /SD/clock.ini.
lcd_ltdc, lvgl_demo и lvgl_clock выводят на один дисплей — вместе их не включают.
Вывод рецептов — в лог USART1 115200 (PB14, на разъёме отладчика J6 и на J2).
Свой рецепт
Заголовок раздела «Свой рецепт»- Папка
recipes/my_thing/сmy_thing.c, где естьvoid my_thing_start(void). my_thing_start()только создаёт задачу FreeRTOS и сразу возвращается:appTaskна ней не задерживается.cmake --preset Release -DH723_RECIPES="my_thing".- Если рецепту нужны библиотеки или код другого рецепта — они подключаются в
recipes/my_thing/recipe.cmake(образец —lvgl_demo/recipe.cmake).
Правила, которые соблюдают все рецепты:
- Задачи, очереди и стеки — статически (
xTaskCreateStatic): их размер виден при сборке, а не выясняется при нехватке кучи во время работы. - Буферы для DMA — не в обычных
static-массивах: они попадают в DTCM, куда DMA1/DMA2 доступа не имеют. ПодходятpvPortMalloc(RAM_D1) илиsdramMalloc(SDRAM), с выравниванием по 32 байта и очисткой/инвалидацией кэша. - Прерывания, из которых зовутся функции
...FromISR, — с приоритетом 5 и ниже по важности (число ≥ 5). - Свободные выводы и периферия — в
docs/board.mdрепозитория.
Рецепты в репозитории: recipes
