Перейти к содержанию
    

Ошибка в цепочке заголовков. В конце: cmsis_armcc.h

Одновременно получил две загадки.

В начале программных модулей, в поле слева, помечено красным крестиком строчка #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).

 

 

9e02d81d4c80.jpg

 

 

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

И в самом файле он есть:

 

0139a79b9b71.jpg

 

 

 

Вот упоминание нечто похожего. Решение было перейти на другой CMSIS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в окне хода компиляции получаю вот это: 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 есть баги.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)

Это такая особенность нынешних средств разработки. Файл парсится два раза - один раз это делает IDE, чтобы уметь подсвечивать-подсказывать, и второй раз это делает компилятор.

Ну и вот эту конструкцию парсер кейла не поддерживает. Если компилятор не выдаёт на это ошибок - проблем никаких нет.

Для красоты можно попробовать подобрать версии кейла/заголовка (может, поправили уже) или поредактировать его руками.

 

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

Волшебный ребилдол (rebuild all) пробовали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...