- Регистрация
- 03.02.2025
- Сообщения
- 23
- Реакции
- 14
- Баллы
- 13
- Город
- Брест
- Имя
- Дмитрий
Собственно, уперся в сабж при переносе проекта из stm32 (cube) на GD32 (Platformio) и закопался на ровном месте. Конкретно взятый gd32, имеет почти полное соответствие по адресам, структурам и назначению регистров с stm32 в части usb. Есть незначительные отличия в тактировании, полный список отличий составлять было лень. В результате, проект завелся под gd32-spl, осталось только реализовать вкусные плюшки. У gd32 есть своя библиотека usb, представлена всего тремя пользовательскими функциями и кардинально отличается от аналогичной библиотеки stm. (в ардуиновском loop было бы вполне юзабельно)
Что делал:
1. Подключил библиотеки gd32 usbd, заглушил вызовы cdc_transmit_fs, подменил Init. Устройство подключается, определяется. Как быть дальше с таким куцым набором функций, выведенных наружу, при необходимости работать даже с CDC_SET_CONTROL_LINE_STATE, я не знаю.
2. Решил оставить все на stm библиотеках, но взять от HAL только минимально необходимое, соскладировав в отдельный файл. И снова фиаско. Зависимость от CMSIS+HAL такая, что их нужно втащить чуть ли не полностью, при этом нужно разруливать конфликты с GD32 CMSIS+SPL. Когда файл с HAL-функциями стал больше 2000 строк, а ошибок "inplicit declaration" перевалило за 2 сотни, от этой идеи пришлось отказаться.
Надеюсь, у кого-нибудь возникнет идея, как без титанических усилий достичь желаемого?
Что делал:
1. Подключил библиотеки gd32 usbd, заглушил вызовы cdc_transmit_fs, подменил Init. Устройство подключается, определяется. Как быть дальше с таким куцым набором функций, выведенных наружу, при необходимости работать даже с CDC_SET_CONTROL_LINE_STATE, я не знаю.
2. Решил оставить все на stm библиотеках, но взять от HAL только минимально необходимое, соскладировав в отдельный файл. И снова фиаско. Зависимость от CMSIS+HAL такая, что их нужно втащить чуть ли не полностью, при этом нужно разруливать конфликты с GD32 CMSIS+SPL. Когда файл с HAL-функциями стал больше 2000 строк, а ошибок "inplicit declaration" перевалило за 2 сотни, от этой идеи пришлось отказаться.
Надеюсь, у кого-нибудь возникнет идея, как без титанических усилий достичь желаемого?