Konstantin Oblaukhov 5 lat temu
rodzic
commit
52590c17e7

+ 1 - 1
cmake/FindCMSIS.cmake

@@ -1,5 +1,5 @@
 if(NOT CMSIS_FIND_COMPONENTS)
-    set(CMSIS_FIND_COMPONENTS STM32F0 STM32G0 STM32L0 STM32F1 STM32L1 STM32F2 STM32F4)
+    set(CMSIS_FIND_COMPONENTS STM32F0 STM32G0 STM32L0 STM32F1 STM32L1 STM32F2 STM32F3 STM32F4)
 endif()
 
 include(stm32/devices)

+ 3 - 0
cmake/stm32/common.cmake

@@ -113,6 +113,8 @@ function(stm32_get_memory_info FAMILY DEVICE
         stm32l1_get_memory_info(${DEVICE} ${TYPE} FLASH RAM)
     elseif(FAMILY STREQUAL "F2")
         stm32f2_get_memory_info(${DEVICE} ${TYPE} FLASH RAM)
+    elseif(FAMILY STREQUAL "F3")
+        stm32f3_get_memory_info(${DEVICE} ${TYPE} FLASH RAM)
     endif()
 
     set(${FLASH_SIZE} ${FLASH} PARENT_SCOPE)
@@ -149,5 +151,6 @@ include(stm32/l0)
 include(stm32/f1)
 include(stm32/l1)
 include(stm32/f2)
+include(stm32/f3)
 include(stm32/f4)
 

+ 59 - 0
cmake/stm32/f3.cmake

@@ -0,0 +1,59 @@
+set(STM32_F3_TYPES 
+    F301x8 F302x8 F302xC F302xE F303x8 F303xC 
+    F303xE F318xx F328xx F334x8 F358xx F373xC 
+    F378xx F398xx 
+)
+set(STM32_F3_TYPE_MATCH 
+    "301.[68]" "302.[68]" "302.[BC]" "302.[ED]" "303.[68]" "303.[BC]" 
+    "303.[ED]" "318.." "328.." "334.[468]" "358.." "373.[8BC]"
+    "378.." "398.."    
+)
+set(STM32_F3_RAM_SIZES 
+     16K  16K   0K  64K  16K   0K  
+     80K  16K  16K  16K  48K   0K
+     32K  80K
+)
+set(STM32_F3_CCRAM_SIZES 
+      0K   0K   0K   0K   0K   0K  
+      0K   0K   0K   0K   0K   0K
+      0K   0K
+)
+
+stm32_util_create_family_targets(F3)
+
+target_compile_options(STM32::F3 INTERFACE 
+    -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
+)
+target_link_options(STM32::F3 INTERFACE 
+    -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
+)
+
+function(stm32f3_get_memory_info DEVICE TYPE FLASH_SIZE RAM_SIZE)
+    string(REGEX REPLACE "F3[0-9][0-9].([468BCDEFGHI])" "\\1" SIZE_CODE ${DEVICE})
+    
+    if(TYPE STREQUAL "F302xC")
+        if(SIZE_CODE STREQUAL "C")
+            set(RAM "40K")
+        else()
+            set(RAM "32K")
+        endif()
+    elseif(TYPE STREQUAL "F303xC")
+        if(SIZE_CODE STREQUAL "C")
+            set(RAM "48K")
+        else()
+            set(RAM "40K")
+        endif()
+    elseif(TYPE STREQUAL "F373xC")
+        if(SIZE_CODE STREQUAL "B")
+            set(RAM "24K")
+        elseif(SIZE_CODE STREQUAL "C")
+            set(RAM "32K")
+        else()
+            set(RAM "16K")
+        endif()
+    endif()
+    
+    if(RAM)
+        set(${RAM_SIZE} ${RAM} PARENT_SCOPE)
+    endif()
+endfunction()

+ 1 - 1
tests/cmsis/CMakeLists.txt

@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.8)
 set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/stm32_gcc.cmake)
 
 if(NOT TEST_FAMILIES)
-    set(TEST_FAMILIES F0 G0 L0 F1 L1 F2 F4)
+    set(TEST_FAMILIES F0 G0 L0 F1 L1 F2 F3 F4)
 endif()
 
 project(cmsis-test C ASM)