Merge pull request #6483 from etracer65/i2c_gyro_loop_denom
[betaflight.git] / make / mcu / STM32F4.mk
blobf5bdcd543268ab697d0a21d56c7a78151c34d325
2 # F4 Make file include
5 ifeq ($(OPBL),yes)
6 ifeq ($(TARGET), $(filter $(TARGET),$(F405_TARGETS)))
7 LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f405_opbl.ld
8 else ifeq ($(TARGET), $(filter $(TARGET),$(F411_TARGETS)))
9 LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f411_opbl.ld
10 else
11 $(error No OPBL linker script specified for $(TARGET`))
12 endif
13 endif
15 #CMSIS
16 ifeq ($(PERIPH_DRIVER), HAL)
17 CMSIS_DIR := $(ROOT)/lib/main/STM32F4/Drivers/CMSIS
18 STDPERIPH_DIR = $(ROOT)/lib/main/STM32F4/Drivers/STM32F4xx_HAL_Driver
19 STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/Src/*.c))
20 EXCLUDES =
21 else
22 CMSIS_DIR := $(ROOT)/lib/main/CMSIS
23 STDPERIPH_DIR = $(ROOT)/lib/main/STM32F4/Drivers/STM32F4xx_StdPeriph_Driver
24 STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/src/*.c))
25 EXCLUDES = stm32f4xx_crc.c \
26 stm32f4xx_can.c \
27 stm32f4xx_fmc.c \
28 stm32f4xx_sai.c \
29 stm32f4xx_cec.c \
30 stm32f4xx_dsi.c \
31 stm32f4xx_flash_ramfunc.c \
32 stm32f4xx_fmpi2c.c \
33 stm32f4xx_lptim.c \
34 stm32f4xx_qspi.c \
35 stm32f4xx_spdifrx.c \
36 stm32f4xx_cryp.c \
37 stm32f4xx_cryp_aes.c \
38 stm32f4xx_hash_md5.c \
39 stm32f4xx_cryp_des.c \
40 stm32f4xx_rtc.c \
41 stm32f4xx_hash.c \
42 stm32f4xx_dbgmcu.c \
43 stm32f4xx_cryp_tdes.c \
44 stm32f4xx_hash_sha1.c
45 endif
47 ifeq ($(TARGET),$(filter $(TARGET), $(F411_TARGETS)))
48 EXCLUDES += stm32f4xx_fsmc.c
49 TARGET_FLASH := 512
50 else ifeq ($(TARGET),$(filter $(TARGET), $(F446_TARGETS)))
51 EXCLUDES += stm32f4xx_fsmc.c
52 TARGET_FLASH := 512
53 else
54 TARGET_FLASH := 1024
55 endif
57 STDPERIPH_SRC := $(filter-out ${EXCLUDES}, $(STDPERIPH_SRC))
59 ifeq ($(PERIPH_DRIVER), HAL)
60 #USB
61 USBCORE_DIR = $(ROOT)/lib/main/STM32F4/Middlewares/ST/STM32_USB_Device_Library/Core
62 USBCORE_SRC = $(notdir $(wildcard $(USBCORE_DIR)/Src/*.c))
63 EXCLUDES = usbd_conf_template.c
64 USBCORE_SRC := $(filter-out ${EXCLUDES}, $(USBCORE_SRC))
66 USBCDC_DIR = $(ROOT)/lib/main/STM32F4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC
67 USBCDC_SRC = $(notdir $(wildcard $(USBCDC_DIR)/Src/*.c))
68 EXCLUDES = usbd_cdc_if_template.c
69 USBCDC_SRC := $(filter-out ${EXCLUDES}, $(USBCDC_SRC))
71 VPATH := $(VPATH):$(USBCDC_DIR)/Src:$(USBCORE_DIR)/Src
73 DEVICE_STDPERIPH_SRC := $(STDPERIPH_SRC) \
74 $(USBCORE_SRC) \
75 $(USBCDC_SRC)
76 else
77 USBCORE_DIR = $(ROOT)/lib/main/STM32_USB_Device_Library/Core
78 USBCORE_SRC = $(notdir $(wildcard $(USBCORE_DIR)/src/*.c))
79 USBOTG_DIR = $(ROOT)/lib/main/STM32_USB_OTG_Driver
80 USBOTG_SRC = $(notdir $(wildcard $(USBOTG_DIR)/src/*.c))
81 EXCLUDES = usb_bsp_template.c \
82 usb_conf_template.c \
83 usb_hcd_int.c \
84 usb_hcd.c \
85 usb_otg.c
87 USBOTG_SRC := $(filter-out ${EXCLUDES}, $(USBOTG_SRC))
88 USBCDC_DIR = $(ROOT)/lib/main/STM32_USB_Device_Library/Class/cdc
89 USBCDC_SRC = $(notdir $(wildcard $(USBCDC_DIR)/src/*.c))
90 EXCLUDES = usbd_cdc_if_template.c
91 USBCDC_SRC := $(filter-out ${EXCLUDES}, $(USBCDC_SRC))
92 USBMSC_DIR = $(ROOT)/lib/main/STM32_USB_Device_Library/Class/msc
93 USBMSC_SRC = $(notdir $(wildcard $(USBMSC_DIR)/src/*.c))
94 EXCLUDES = usbd_storage_template.c
95 USBMSC_SRC := $(filter-out ${EXCLUDES}, $(USBMSC_SRC))
96 USBHID_DIR = $(ROOT)/lib/main/STM32_USB_Device_Library/Class/hid
97 USBHID_SRC = $(notdir $(wildcard $(USBHID_DIR)/src/*.c))
98 USBWRAPPER_DIR = $(ROOT)/lib/main/STM32_USB_Device_Library/Class/hid_cdc_wrapper
99 USBWRAPPER_SRC = $(notdir $(wildcard $(USBWRAPPER_DIR)/src/*.c))
100 VPATH := $(VPATH):$(USBOTG_DIR)/src:$(USBCORE_DIR)/src:$(USBCDC_DIR)/src:$(USBMSC_DIR)/src:$(USBHID_DIR)/src:$(USBWRAPPER_DIR)/src
102 DEVICE_STDPERIPH_SRC := $(STDPERIPH_SRC) \
103 $(USBOTG_SRC) \
104 $(USBCORE_SRC) \
105 $(USBCDC_SRC) \
106 $(USBHID_SRC) \
107 $(USBWRAPPER_SRC) \
108 $(USBMSC_SRC)
109 endif
111 #CMSIS
112 VPATH := $(VPATH):$(CMSIS_DIR)/Core/Include:$(ROOT)/lib/main/STM32F4/Drivers/CMSIS/Device/ST/STM32F4xx
114 ifeq ($(PERIPH_DRIVER), HAL)
115 CMSIS_SRC :=
116 INCLUDE_DIRS := $(INCLUDE_DIRS) \
117 $(STDPERIPH_DIR)/Inc \
118 $(USBCORE_DIR)/Inc \
119 $(USBCDC_DIR)/Inc \
120 $(CMSIS_DIR)/Include \
121 $(CMSIS_DIR)/Device/ST/STM32F4xx/Include \
122 $(ROOT)/src/main/vcp_hal
123 else
124 CMSIS_SRC := $(notdir $(wildcard $(CMSIS_DIR)/CoreSupport/*.c \
125 $(ROOT)/lib/main/STM32F4/Drivers/CMSIS/Device/ST/STM32F4xx/*.c))
126 INCLUDE_DIRS := $(INCLUDE_DIRS) \
127 $(STDPERIPH_DIR)/inc \
128 $(USBOTG_DIR)/inc \
129 $(USBCORE_DIR)/inc \
130 $(USBCDC_DIR)/inc \
131 $(USBHID_DIR)/inc \
132 $(USBWRAPPER_DIR)/inc \
133 $(USBMSC_DIR)/inc \
134 $(USBFS_DIR)/inc \
135 $(CMSIS_DIR)/Core/Include \
136 $(ROOT)/lib/main/STM32F4/Drivers/CMSIS/Device/ST/STM32F4xx \
137 $(ROOT)/src/main/vcpf4
138 endif
140 ifneq ($(filter SDCARD,$(FEATURES)),)
141 INCLUDE_DIRS := $(INCLUDE_DIRS) \
142 $(FATFS_DIR)
143 VPATH := $(VPATH):$(FATFS_DIR)
144 endif
146 #Flags
147 ARCH_FLAGS = -mthumb -mcpu=cortex-m4 -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -Wdouble-promotion
149 ifeq ($(TARGET),$(filter $(TARGET),$(F411_TARGETS)))
150 DEVICE_FLAGS = -DSTM32F411xE
151 LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f411.ld
152 STARTUP_SRC = startup_stm32f411xe.s
153 else ifeq ($(TARGET),$(filter $(TARGET),$(F405_TARGETS)))
154 DEVICE_FLAGS = -DSTM32F40_41xxx -DSTM32F405xx
155 LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f405.ld
156 STARTUP_SRC = startup_stm32f40xx.s
157 else ifeq ($(TARGET),$(filter $(TARGET),$(F446_TARGETS)))
158 DEVICE_FLAGS = -DSTM32F446xx
159 LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f446.ld
160 STARTUP_SRC = startup_stm32f446xx.s
161 else
162 $(error Unknown MCU for F4 target)
163 endif
164 DEVICE_FLAGS += -DHSE_VALUE=$(HSE_VALUE)
166 MCU_COMMON_SRC = \
167 target/system_stm32f4xx.c \
168 drivers/accgyro/accgyro_mpu.c \
169 drivers/adc_stm32f4xx.c \
170 drivers/bus_i2c_stm32f10x.c \
171 drivers/bus_spi_stdperiph.c \
172 drivers/dma_stm32f4xx.c \
173 drivers/inverter.c \
174 drivers/light_ws2811strip_stdperiph.c \
175 drivers/transponder_ir_io_stdperiph.c \
176 drivers/pwm_output_dshot.c \
177 drivers/serial_uart_init.c \
178 drivers/serial_uart_stm32f4xx.c \
179 drivers/system_stm32f4xx.c \
180 drivers/timer_stm32f4xx.c
182 ifeq ($(PERIPH_DRIVER), HAL)
183 VCP_SRC = \
184 vcp_hal/usbd_desc.c \
185 vcp_hal/usbd_conf.c \
186 vcp_hal/usbd_cdc_interface.c \
187 drivers/serial_usb_vcp.c \
188 drivers/usb_io.c
189 else
190 VCP_SRC = \
191 vcpf4/stm32f4xx_it.c \
192 vcpf4/usb_bsp.c \
193 vcpf4/usbd_desc.c \
194 vcpf4/usbd_usr.c \
195 vcpf4/usbd_cdc_vcp.c \
196 drivers/serial_usb_vcp.c \
197 drivers/usb_io.c
198 endif
200 MSC_SRC = \
201 drivers/usb_msc_f4xx.c \
202 msc/usbd_msc_desc.c \
203 msc/usbd_storage.c
205 ifneq ($(filter SDCARD,$(FEATURES)),)
206 MSC_SRC += \
207 msc/usbd_storage_sd_spi.c
208 endif
210 ifneq ($(filter SDIO,$(FEATURES)),)
211 MSC_SRC += \
212 msc/usbd_storage_sdio.c
213 MCU_COMMON_SRC += \
214 drivers/sdio_f4xx.c
215 endif
217 ifneq ($(filter ONBOARDFLASH,$(FEATURES)),)
218 MSC_SRC += \
219 msc/usbd_storage_emfat.c \
220 msc/emfat.c \
221 msc/emfat_file.c
222 endif
224 DSP_LIB := $(ROOT)/lib/main/CMSIS/DSP
225 DEVICE_FLAGS += -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__FPU_PRESENT=1 -DUNALIGNED_SUPPORT_DISABLE -DARM_MATH_CM4