Nov 27, 2017 23:53
Когда делаешь всё по примерам, где весь код мешаниной лежит в одиноком main.c, всё компилируется изумительно. Но как только добавляется парочка файлов, где хочется использовать глобальный хэндл устройства, компилятор заходит в тупик.
А всё дело в том, что в генерируемом Кубом коде, в main.c инклудится main.h, и в HAL заголовках тоже он инклудится. И делай ты декларирование структур заранее или подключай в main.h HAL, получаешь либо конфликт объявлений, либо необъявленный тип в результате циклического инклуда.
Вижу 2 возможных решения:
1. Отказаться от глобальных хэндлов и спрятать их внутри синглтонов
2. Отказаться от HAL, учитывая, что в случае с UART-ом я его и так практически не использую, кроме как для инициализации, а кроме UART-а компилятор больше вроде на другие части и не ругался.
stm32,
программирование