Комментарии 17
Или можно использвать PlatformIO, там уже добавлена поддержка ch32.
Можно, конечно, я во вступлении написал об этом. Но это же то же самое, по сути, что взять MounRiver - собственный формат проекта, что мне не нравится.
Ну и бывают некоторые околополитические вопросы и проблемы использования тех или иных инструментов.
Кажется там только один мк - ch559 (с ядром 8051)? Как туда добавить ch582f?
Добрый день, я работаю в компании как раз над оборудованием с ch32 в основе. Вы не пробовали настроить vscode под c++? Moun river это позволяет, но там достаточно древний стандарт, и поднять его, по крайней мере, до 11 проблемно. Vscode было бы лучшим решением
Добрый, в CMakeLists прописано, что используются ASM, C и C++, так что просто создавайте cpp-шный файл и будет собрано под C++. Хотя странно, что древний - в последней версии GCC 12.2, он C++20 во многом поддерживает.
Собственно, проделанная работа - это подготовка к тому, чтобы сделать порт библиотечки zhele под ch32, а она "плюсовее" некуда.
Ну и можно set (CMAKE_CXX_STANDARD 23)
добавить
Тоже пришел к подобной связке, только вместо CMake->Make, один раз написал файл и он сам ищет все .c .cpp .h .hpp в желаемых папках.
И расширение для отладки Native Debug, оно более общее.
Мне нравятся подобные решения, так как имея минимальный набор инструментов можно собирать проекты для любых чипов, любой конфигурации на бесплатных обновляемых инструментах (Для меня это критично, так как использую некоторые фичи С++20, для чистого С обновляемость компилятора не так важна).
Примерно из тех же соображений использую. Но все-таки для общего случая (особенно, если в публичный доступ) cmake больше возможностей даёт, хотя бы файлы с гитхаба подтянуть.
А так да, "бесплатное" обновление до самых свежих версий тулчейна, под stm даже C++23 кое-где уже использую (статический оператор []
)
Например, для контроллеров STM32 существует замечательный проект ObKo/stm32-cmake
Я в своей ленности, завёл cmake stm32duino и QtC.
Работают ли прерывания с 13й версией GCC? Там ведь надо использовать специальный атрибут от WCH __attribute__((interrupt("WCH-Interrupt-fast")))
По крайней мере в их версии компилятора.
Я что-то такое видел, но не могу ответить, к сожалению. Если правильно понял RM, то у контроллеров кроме V0, по сути, два набора векторов и вопрос в том, к какому из двух возможных компоновщик слинкует определенный обработки, верно?
Надо изучить, конечно. Возможно, рано порадовался возможности использовать GCC 13.
Могу быть не прав, но из ЭТОГО сделал вывод, что в корректном случае не должно быть пролога/эпилога (naked), но должна быть инструкция mret
в конце. MounRiver так сделал.
Потыкал в атрибуты, действительно, GCC из рассмотренного в статье тулчейна не сгенерировал правильный ассемблерный код, к сожалению.
Видимо, нужно брать версию из MRS или как-то патчить, если сильно нужна свежая версия (патчить, наверно, по мотивам ЭТОГО репо).
VSCode+CMake+openocd для программирования и отладки ch32