FLYWOOF411_V2 based on target files from vendor (#6495)
[inav.git] / cmake / stm32f7.cmake
blob51d6786a265d07dad0a8f003d17dea467d7f872f
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
65     drivers/adc_stm32f7xx.c
66     drivers/bus_i2c_hal.c
67     drivers/dma_stm32f7xx.c
68     drivers/bus_spi_hal_ll.c
69     drivers/timer.c
70     drivers/timer_impl_hal.c
71     drivers/timer_stm32f7xx.c
72     drivers/system_stm32f7xx.c
73     drivers/serial_uart_stm32f7xx.c
74     drivers/serial_uart_hal.c
75     drivers/sdcard/sdmmc_sdio_f7xx.c
78 main_sources(STM32F7_MSC_SRC
79     drivers/usb_msc_f7xx.c
82 set(STM32F7_DEFINITIONS
83     ${CORTEX_M7_DEFINITIONS}
84     USE_HAL_DRIVER
85     USE_FULL_LL_DRIVER
88 function(target_stm32f7xx)
89     target_stm32(
90         SOURCES ${STM32F7_HAL_SRC} ${STM32F7_SRC}
91         COMPILE_DEFINITIONS ${STM32F7_DEFINITIONS}
92         COMPILE_OPTIONS ${CORTEX_M7_COMMON_OPTIONS} ${CORTEX_M7_COMPILE_OPTIONS}
93         INCLUDE_DIRECTORIES ${STM32F7_INCLUDE_DIRS}
94         LINK_OPTIONS ${CORTEX_M7_COMMON_OPTIONS} ${CORTEX_M7_LINK_OPTIONS}
96         MSC_SOURCES ${STM32F7_USBMSC_SRC} ${STM32F7_MSC_SRC}
97         VCP_SOURCES ${STM32F7_USB_SRC} ${STM32F7_VCP_SRC}
98         VCP_INCLUDE_DIRECTORIES ${STM32F7_USB_INCLUDE_DIRS} ${STM32F7_VCP_DIR}
100         OPTIMIZATION -O2
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         set(definitions
116             STM32F7
117             STM32F7${subfamily}xx
118             STM32F7${subfamily}x${upper_size}
119             MCU_FLASH_SIZE=${flash_size}
120         )
121         target_stm32f7xx(
122             NAME ${name}
123             STARTUP startup_stm32f7${subfamily}xx.s
124             COMPILE_DEFINITIONS ${definitions}
125             LINKER_SCRIPT stm32_flash_f7${subfamily}x${size}
126             ${${func_ARGV}}
127         )
128     endfunction()
129 endmacro()
131 define_target_stm32f7(22 e)
132 define_target_stm32f7(45 g)
133 define_target_stm32f7(46 g)
134 define_target_stm32f7(65 g)
135 define_target_stm32f7(65 i)