Маленькая заметка: если вы скачали с сайта ST старые примеры для плат Discovery и пытаетесь запустить их в новом IAR — появляется туча ошибок типа
Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp void __set_PSP(unsigned long)" (declared at core_cm3.h 1094 Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp void __set_MSP(unsigned long)" (declared at core_cm3.h 1114 Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __get_PSP(void)" (declared at core_cm3.h 1084 Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __REV16(unsigned long)" core_cm3.h 1124 Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __RBIT(unsigned long)" core_cm3.h 1134 Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __STREXB(unsigned char, core_cm3.h 1175 Error[Pe147]: declaration is incompatible with "__nounwind __interwork __softfp unsigned long __STREXH(unsigned short, core_cm3.h 1186
Проблема в том, что в IAR появилась своя собственная встроенная библиотека CMSIS, а те примеры рассчитаны на использование своей библиотеки, которая лежит в папке Libraries/CMSIS. В старом IAR она компилировалась, а в новом — нет, и обязательно нужно использовать встроенную.
Решение простое:
- В дереве проекта в папке CMSIS удаляем подключенный файл core_cm3.c: выделяем файл
[<img class="alignnone size-full wp-image-2032" src="/wp-content/uploads/2014/10/core_cm3_delete.png" alt="core_cm3_delete" width="220" height="238" />](/wp-content/uploads/2014/10/core_cm3_delete.png)
Нажимаем delete, на предупреждение отвечаем «Да». 2. Заходим в свойства проекта: правой кнопкой по проекту на панели Workspace слева, пункт Options. Здесь: C/C++ compiler -> Preprocessor -> Additional include directories.
[<img class="alignnone size-large wp-image-2033" src="/wp-content/uploads/2014/10/coresupport_delete.png" alt="coresupport_delete" width="550" height="514" />](/wp-content/uploads/2014/10/coresupport_delete.png)
Удаляем строку «$PROJ\_DIR$\..\..\..\..\Libraries\CMSIS\CM3\CoreSupport» (там IAR искал файл core\_cm3.h) 3. Только что мы отключили CMSIS (исходник и заголовки), поставляющийся вместе с проектом. Теперь подключаем встроенный в IAR CMSIS: в свойствах проекта General options -> Library Configuration -> CMSIS -> ставим галочку Use CMSIS.
[<img class="alignnone size-large wp-image-2034" src="/wp-content/uploads/2014/10/use_cmsis.png" alt="use_cmsis" width="550" height="514" />](/wp-content/uploads/2014/10/use_cmsis.png)
Project -> Rebuild All — и проект успешно компилируется.
Свежие комментарии