STRING(TOLOWER ${STM32_FAMILY} STM32_FAMILY_LOWER) IF(STM32_FAMILY STREQUAL "F1") SET(CMSIS_STARTUP_PREFIX startup_stm32f) SET(CMSIS_HEADERS system_stm32f1xx.h core_cm3.h stm32f1xx.h) SET(CMSIS_LINKER_SCRIPT_NAME stm32f1.ld.in) SET(CMSIS_SRCS system_stm32f1xx.c) ELSEIF(STM32_FAMILY STREQUAL "F4") SET(CMSIS_STARTUP_PREFIX startup_stm32f) SET(CMSIS_HEADERS system_stm32f4xx.h core_cm4.h stm32f4xx.h) SET(CMSIS_LINKER_SCRIPT_NAME stm32f4.ld.in) SET(CMSIS_SRCS system_stm32f4xx.c) ENDIF() IF(STM32_CHIP_TYPE OR STM32_CHIP) IF(NOT STM32_CHIP_TYPE) STM32_GET_CHIP_TYPE(${STM32_CHIP} STM32_CHIP_TYPE) IF(NOT STM32_CHIP_TYPE) MESSAGE(FATAL_ERROR "Unknown chip: ${STM32_CHIP}. Try to use STM32_CHIP_TYPE directly.") ENDIF() MESSAGE(STATUS "${STM32_CHIP} is ${STM32_CHIP_TYPE} device") ENDIF() STRING(TOLOWER ${STM32_CHIP_TYPE} STM32_CHIP_TYPE_LOWER) SET(CMSIS_STARTUP_NAME ${CMSIS_STARTUP_PREFIX}${STM32_CHIP_TYPE_LOWER}.s) ENDIF() FIND_PATH(CMSIS_INCLUDE_DIR ${CMSIS_HEADERS} PATH_SUFFIXES include stm32${STM32_FAMILY_LOWER} ) FIND_FILE(CMSIS_LINKER_SCRIPT ${CMSIS_LINKER_SCRIPT_NAME} PATHS ${CMAKE_FIND_ROOT_PATH} PATH_SUFFIXES share/cmsis cmsis ) FOREACH(CMSIS_SRC ${CMSIS_SRCS}) FIND_FILE(CMSIS_SRC_FILE NAMES ${CMSIS_SRC} PATHS ${CMAKE_FIND_ROOT_PATH} PATH_SUFFIXES share/cmsis cmsis) LIST(APPEND CMSIS_SOURCES ${CMSIS_SRC_FILE}) ENDFOREACH() IF(STM32_CHIP_TYPE) FIND_FILE(CMSIS_STARTUP_SOURCE ${CMSIS_STARTUP_NAME} PATHS ${CMAKE_FIND_ROOT_PATH}/share/cmsis/ ) LIST(APPEND CMSIS_SOURCES ${CMSIS_STARTUP_SOURCE}) ENDIF() INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(CMSIS DEFAULT_MSG CMSIS_INCLUDE_DIR CMSIS_LINKER_SCRIPT CMSIS_SOURCES)