Merge pull request #8911 from iNavFlight/dzikuvx-speedybeef405wing
[inav.git] / cmake / stm32f7.cmake
blob6aa2a9fd8022176c530ea8ad661d35d685f7f6a9
1 include(cortex-m7)
2 include(stm32f7-usb)
4 set(STM32F7_HAL_DIR "${MAIN_LIB_DIR}/main/STM32F7/Drivers/STM32F7xx_HAL_Driver")
6 set(STM32F7_HAL_SRC
7     stm32f7xx_hal.c
8     stm32f7xx_hal_adc.c
9     stm32f7xx_hal_adc_ex.c
10     stm32f7xx_hal_cortex.c
11     stm32f7xx_hal_dac.c
12     stm32f7xx_hal_dac_ex.c
13     stm32f7xx_hal_dma.c
14     stm32f7xx_hal_dma_ex.c
15     stm32f7xx_hal_flash.c
16     stm32f7xx_hal_flash_ex.c
17     stm32f7xx_hal_gpio.c
18     stm32f7xx_hal_i2c.c
19     stm32f7xx_hal_i2c_ex.c
20     stm32f7xx_hal_pcd.c
21     stm32f7xx_hal_pcd_ex.c
22     stm32f7xx_hal_pwr.c
23     stm32f7xx_hal_pwr_ex.c
24     stm32f7xx_hal_rcc.c
25     stm32f7xx_hal_rcc_ex.c
26     stm32f7xx_hal_rtc.c
27     stm32f7xx_hal_rtc_ex.c
28     stm32f7xx_hal_spi.c
29     stm32f7xx_hal_tim.c
30     stm32f7xx_hal_tim_ex.c
31     stm32f7xx_hal_uart.c
32     stm32f7xx_hal_usart.c
33     stm32f7xx_ll_dma.c
34     stm32f7xx_ll_dma2d.c
35     stm32f7xx_ll_gpio.c
36     stm32f7xx_ll_rcc.c
37     stm32f7xx_ll_spi.c
38     stm32f7xx_ll_tim.c
39     stm32f7xx_ll_usb.c
40     stm32f7xx_ll_utils.c
42 list(TRANSFORM STM32F7_HAL_SRC PREPEND "${STM32F7_HAL_DIR}/Src/")
44 set(STM32F7_CMSIS_DEVICE_DIR "${MAIN_LIB_DIR}/main/STM32F7/Drivers/CMSIS/Device/ST/STM32F7xx")
46 set(STM32F7_VCP_DIR "${MAIN_SRC_DIR}/vcp_hal")
48 set(STM32F7_VCP_SRC
49     usbd_desc.c
50     usbd_conf_stm32f7xx.c
51     usbd_cdc_interface.c
53 list(TRANSFORM STM32F7_VCP_SRC PREPEND "${STM32F7_VCP_DIR}/")
55 set(STM32F7_INCLUDE_DIRS
56     ${STM32F7_HAL_DIR}/Inc
57     ${STM32F7_CMSIS_DEVICE_DIR}/Include
60 main_sources(STM32F7_SRC
61     target/system_stm32f7xx.c
63     config/config_streamer_stm32f7.c
64     config/config_streamer_ram.c
65     config/config_streamer_extflash.c
67     drivers/adc_stm32f7xx.c
68     drivers/bus_i2c_hal.c
69     drivers/dma_stm32f7xx.c
70     drivers/bus_spi_hal_ll.c
71     drivers/timer.c
72     drivers/timer_impl_hal.c
73     drivers/timer_stm32f7xx.c
74     drivers/system_stm32f7xx.c
75     drivers/serial_uart_stm32f7xx.c
76     drivers/serial_uart_hal.c
77     drivers/sdcard/sdmmc_sdio_f7xx.c
80 main_sources(STM32F7_MSC_SRC
81     drivers/usb_msc_f7xx.c
84 set(STM32F7_DEFINITIONS
85     ${CORTEX_M7_DEFINITIONS}
86     USE_HAL_DRIVER
87     USE_FULL_LL_DRIVER
90 function(target_stm32f7xx)
91     target_stm32(
92         SOURCES ${STM32F7_HAL_SRC} ${STM32F7_SRC}
93         COMPILE_DEFINITIONS ${STM32F7_DEFINITIONS}
94         COMPILE_OPTIONS ${CORTEX_M7_COMMON_OPTIONS} ${CORTEX_M7_COMPILE_OPTIONS}
95         INCLUDE_DIRECTORIES ${STM32F7_INCLUDE_DIRS}
96         LINK_OPTIONS ${CORTEX_M7_COMMON_OPTIONS} ${CORTEX_M7_LINK_OPTIONS}
98         MSC_SOURCES ${STM32F7_USBMSC_SRC} ${STM32F7_MSC_SRC}
99         VCP_SOURCES ${STM32F7_USB_SRC} ${STM32F7_VCP_SRC}
100         VCP_INCLUDE_DIRECTORIES ${STM32F7_USB_INCLUDE_DIRS} ${STM32F7_VCP_DIR}
102         OPENOCD_TARGET stm32f7x
104         BOOTLOADER
106         ${ARGN}
107     )
108 endfunction()
110 macro(define_target_stm32f7 subfamily size)
111     function(target_stm32f7${subfamily}x${size} name)
112         set(func_ARGV ARGV)
113         string(TOUPPER ${size} upper_size)
114         get_stm32_flash_size(flash_size ${size})
115         if(flash_size GREATER 512)
116             set(opt -O2)
117         else()
118             set(opt -Os)
119         endif()
120         set(definitions
121             STM32F7
122             STM32F7${subfamily}xx
123             STM32F7${subfamily}x${upper_size}
124             MCU_FLASH_SIZE=${flash_size}
125         )
126         target_stm32f7xx(
127             NAME ${name}
128             STARTUP startup_stm32f7${subfamily}xx.s
129             COMPILE_DEFINITIONS ${definitions}
130             LINKER_SCRIPT stm32_flash_f7${subfamily}x${size}
131             OPTIMIZATION ${opt}
133             ${${func_ARGV}}
134         )
135     endfunction()
136 endmacro()
138 define_target_stm32f7(22 e)
139 define_target_stm32f7(45 g)
140 define_target_stm32f7(46 g)
141 define_target_stm32f7(65 g)
142 define_target_stm32f7(65 i)