forked from ObKo/stm32-cmake
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgcc_stm32_common.cmake
47 lines (45 loc) · 1.87 KB
/
gcc_stm32_common.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#
# Uses STM32_CHIP_TYPE_REGEXP variable defined in gcc_stm32f?.cmake
#
FUNCTION(STM32_GET_CHIP_TYPE CHIP CHIP_TYPE)
STRING(REGEX REPLACE "^[sS][tT][mM]32[fF](${STM32_CHIP_TYPE_REGEXP})$" "\\1" STM32_CODE ${CHIP})
SET(INDEX 0)
FOREACH(C_TYPE ${STM32_CHIP_TYPES})
LIST(GET STM32_CODES ${INDEX} CHIP_TYPE_REGEXP)
IF(STM32_CODE MATCHES ${CHIP_TYPE_REGEXP})
SET(RESULT_TYPE ${C_TYPE})
ENDIF()
MATH(EXPR INDEX "${INDEX}+1")
ENDFOREACH()
SET(${CHIP_TYPE} ${RESULT_TYPE} PARENT_SCOPE)
ENDFUNCTION()
FUNCTION(STM32_SET_CHIP_DEFINITIONS TARGET CHIP_TYPE)
LIST(FIND STM32_CHIP_TYPES ${CHIP_TYPE} TYPE_INDEX)
IF(TYPE_INDEX EQUAL -1)
MESSAGE(FATAL_ERROR "Invalid/unsupported STM32${STM32_FAMILY} chip type: ${CHIP_TYPE}")
ENDIF()
SET_TARGET_PROPERTIES(${TARGET} PROPERTIES COMPILE_DEFINITIONS "STM32${STM32_FAMILY};STM32${STM32_FAMILY}xx;STM32F${CHIP_TYPE}")
ENDFUNCTION()
FUNCTION(STM32FX_GET_CHIP_FLASH_SIZE STM32_SIZE_CODE FLASH_SIZE)
IF(STM32_SIZE_CODE STREQUAL "4")
SET(${FLASH_SIZE} "16K" PARENT_SCOPE)
ELSEIF(STM32_SIZE_CODE STREQUAL "6")
SET(${FLASH_SIZE} "32K" PARENT_SCOPE)
ELSEIF(STM32_SIZE_CODE STREQUAL "8")
SET(${FLASH_SIZE} "64K" PARENT_SCOPE)
ELSEIF(STM32_SIZE_CODE STREQUAL "B")
SET(${FLASH_SIZE} "128K" PARENT_SCOPE)
ELSEIF(STM32_SIZE_CODE STREQUAL "C")
SET(${FLASH_SIZE} "256K" PARENT_SCOPE)
ELSEIF(STM32_SIZE_CODE STREQUAL "D")
SET(${FLASH_SIZE} "384K" PARENT_SCOPE)
ELSEIF(STM32_SIZE_CODE STREQUAL "E")
SET(${FLASH_SIZE} "512K" PARENT_SCOPE)
ELSEIF(STM32_SIZE_CODE STREQUAL "F")
SET(${FLASH_SIZE} "768K" PARENT_SCOPE)
ELSEIF(STM32_SIZE_CODE STREQUAL "G")
SET(${FLASH_SIZE} "1024K" PARENT_SCOPE)
ELSEIF(STM32_SIZE_CODE STREQUAL "I")
SET(${FLASH_SIZE} "2048K" PARENT_SCOPE)
ENDIF()
ENDFUNCTION()