Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка в цепочке заголовков. В конце: cmsis_armcc.h
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
firstvald
Одновременно получил две загадки.
В начале программных модулей, в поле слева, помечено красным крестиком строчка #include "stm32l4xx_hal.h"
Если идти по цепочке файлов, то попадаем в файл cmsis_armcc.h в котором красным выделены несколько строчек с пояснением expected identifier or '('. Место, которое не нравится, прыгает. Был момент, когда не нравилась одна строка. Начиная с какого-то момента не нравится несколько других. В данный момент, не нравится: #ifndef __NO_EMBEDDED_ASM
__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)
{
rev16 r0, r0
bx lr
}
#endif

не нравящееся слово выделено цветом. В файле ничего не трогал. Не думаю, что в этом какая-то ошибка - это что-то наведенное. Но что ? Мювижн 5 14 00 . Файл к которому приводит цепочка помечен как:
@file cmsis_armcc.h
* @brief CMSIS Cortex-M Core Function/Instruction Header File
* @version V4.30
* @date 20. October 2015



и беда на приходит одна:
в окне хода компиляции получаю вот это: Error: L6218E: Undefined symbol HAL_SPI_IRQHandler (referred from stm32l4xx_it.o).





при этом, видно, что файл, в котором определен обработчик HAL_SPI_IRQHandler, компилируется.
И в самом файле он есть:





Вот упоминание нечто похожего. Решение было перейти на другой CMSIS
Forger
Цитата(firstvald @ Jun 16 2018, 20:41) *
в окне хода компиляции получаю вот это: Error: L6218E: Undefined symbol HAL_SPI_IRQHandler (referred from stm32l4xx_it.o).

Это ошибка не компиляции, а ошибка сборки (линковки).
Конкретно эта ошибка означает, что в одном из скомпилированных файлов упоминается некая функция HAL_SPI_IRQHandler, но линкер не может найти ее реализацию ни в одном из подключенных объектных файлов.
На будущее: префикс L перед кодом ошибки - ошибка линкера, C - соотв. ошибка компилятора.


по поводу первой "загадки":

C HAL-ом дела не имел и уже не собираюсь, но подозревая, что не помешает обновить все паки через Pack Installer на самые свежие версии.
Заодно поробуйте обновить Keil до самой свежей версии, поскольку, есть вероятность, что в относительно старой версии встроенного С-компилятора в keil 5.14 есть баги.
esaulenka
Цитата(firstvald @ Jun 16 2018, 20:41) *
__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)

Это такая особенность нынешних средств разработки. Файл парсится два раза - один раз это делает IDE, чтобы уметь подсвечивать-подсказывать, и второй раз это делает компилятор.
Ну и вот эту конструкцию парсер кейла не поддерживает. Если компилятор не выдаёт на это ошибок - проблем никаких нет.
Для красоты можно попробовать подобрать версии кейла/заголовка (может, поправили уже) или поредактировать его руками.

Цитата(firstvald @ Jun 16 2018, 20:41) *
в окне хода компиляции получаю вот это: Error: L6218E: Undefined symbol HAL_SPI_IRQHandler (referred from stm32l4xx_it.o).

Волшебный ребилдол (rebuild all) пробовали?
Forger
Цитата(esaulenka @ Jun 18 2018, 09:56) *
Волшебный ребилдол

OFF: biggrin.gif


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.