CubeMx использует абстракцию над библиотеками. То же самое происходит с FreeRTOS (создание новой задачи с помощью osThreadCreate () вместо xTaskCreate ()).
Я не знаю о Lwip, но с FreeRTOS можно использовать настоящую библиотеку, включая хорошие заголовки, потому что генерируются и реальная версия, и версия CubeMx. Так что можно использовать реальный, более эффективный.
Если вы используете CubeMx, я рекомендую использовать функции, которые дает CubeMx. Поскольку CubeMx уже генерирует большую часть инициализации LWIP с этими функциями, код будет более чистым, если вы их тоже используете, и также будет намного проще.