Clion + STM32L1xx - как настроить

До этого я попробовал IDE Keil и она работала, но как IDE это ужасно. Поэтому я пытаюсь использовать CLion 2016.3 для создания встроенного проекта C++ для цели STM32L100RCx в Ubuntu 16.04. Но я не могу понять, как правильно настроить. Чтение блога Jetbrain мне не помогает. После компиляции возникает ошибка, из-за которой он не может найти вызов из файла *.ld. Флаги Cmake:

SET(CMAKE_C_FLAGS "-mcpu=cortex-m3 -mthumb" "-msoft-float -mfix-cortex-m3-ldrd")

И получил ошибки:

/tmp/ccPo0ceQ.s:713: Error: selected processor does not support `dsb 0xF' in ARM mode
/tmp/ccPo0ceQ.s:734: Error: selected processor does not support `dsb 0xF' in ARM mode
/tmp/ccPo0ceQ.s:1100: Error: selected processor does not support `dsb 0xF' in ARM mode
/tmp/ccPo0ceQ.s:1111: Error: selected processor does not support `isb 0xF' in ARM mode
/tmp/ccPo0ceQ.s:1157: Error: selected processor does not support `dmb 0xF' in ARM mode
*** recipe for target 'CMakeFiles/Project.elf.dir/Drivers/STM32L1xx_HAL_Driver/Src/stm32l1xx_hal_cortex.c.obj' failed

Может ли кто-нибудь мне помочь или, может быть, заставить меня работать с файлами CMakeLists.txt и *.cmake?

UPD:

Мой файл Cmake:

include(CMakeForceCompiler)
set(CMAKE_SYSTEM_NAME Generic)

CMAKE_FORCE_C_COMPILER(/opt/arm/bin/arm-none-eabi-gcc GNU)
CMAKE_FORCE_CXX_COMPILER(/opt/arm/bin/arm-none-eabi-g++ GNU)

SET(CMAKE_C_FLAGS "-mcpu=cortex-m3 -mthumb" "-msoft-float -mfix-cortex-m3-ldrd")

# fix long strings (CMake appends semicolons)
string(REGEX REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "")

set(BUILD_SHARED_LIBS OFF)

set(CMAKE_CXX_FLAGS "${COMMON_FLAGS} -std=c++11")
set(CMAKE_C_FLAGS "${COMMON_FLAGS} -std=gnu99")
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32L100RCTx_FLASH.ld)
set(CMAKE_EXE_LINKER_FLAGS "-Wl,-gc-sections -T ${LINKER_SCRIPT}")

1 ответ

Кажется, я нахожу правильный путь. Моя неправильная последовательность действий:

  • делает "Сброс кеша и перезагрузки проекта"
  • тогда я пытаюсь построить проект

Я думал, что "Reset Cache And Reload Project" просто очищает кеш Cmake, но на самом деле это выглядит так, как будто он удаляет некоторые необходимые файлы.

Последовательность была правильной:

  • делает "Сброс кеша и перезагрузки проекта"
  • делает "Перезагрузить Cmake Project"
  • тогда успешная сборка

В общем, этого было достаточно, чтобы выбрать опцию "Автоматическая перезагрузка Cmake Project при редактировании".

Другие вопросы по тегам