Skip to content

Instantly share code, notes, and snippets.

@ShawnHymel
Last active September 4, 2019 23:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ShawnHymel/59c5e224dc9f4701a91de56863b221e7 to your computer and use it in GitHub Desktop.
Save ShawnHymel/59c5e224dc9f4701a91de56863b221e7 to your computer and use it in GitHub Desktop.
%HOMEPATH%\.platformio\
{
"build": {
"cpu": "cortex-m0",
"extra_flags": "-DSTM32F070xB",
"f_cpu": "48000000L",
"framework_extra_flags": {
"arduino": "-DVECT_TAB_OFFSET=0x2000 -DCUSTOM_STARTUP_FILE"
},
"mcu": "stm32f070cbt6",
"variant": "YAS-0_F070CB"
},
"debug": {
"jlink_device": "STM32F070CB",
"openocd_target": "stm32f0x",
"svd_path": "STM32F0xx.svd"
},
"frameworks": [
"arduino",
"stm32cube"
],
"name": "YAS-0",
"upload": {
"maximum_ram_size": 15168,
"maximum_size": 122880,
"protocol": "stlink",
"protocols": [
"jlink",
"stlink",
"blackmagic",
"serial"
]
},
"url": "http://shawnhymel.com/",
"vendor": ""
}
# See: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification
menu.pnum=Board part number
menu.xserial=U(S)ART support
menu.usb=USB support (if available)
menu.xusb=USB speed (if available)
menu.opt=Optimize
menu.rtlib=C Runtime Library
menu.upload_method=Upload method
################################################################################
# Nucleo 144 boards
Nucleo_144.name=Nucleo-144
Nucleo_144.build.vid=0x0483
Nucleo_144.build.core=arduino
Nucleo_144.build.board=Nucleo_144
Nucleo_144.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
# NUCLEO_F207ZG board
# Support: USB HID, Serial1 (USART1 on PG9, PG14) and Serial2 (USART2 on PD6, PD5)
Nucleo_144.menu.pnum.NUCLEO_F207ZG=Nucleo F207ZG
Nucleo_144.menu.pnum.NUCLEO_F207ZG.node=NODE_F207ZG
Nucleo_144.menu.pnum.NUCLEO_F207ZG.upload.maximum_size=1048576
Nucleo_144.menu.pnum.NUCLEO_F207ZG.upload.maximum_data_size=131072
Nucleo_144.menu.pnum.NUCLEO_F207ZG.build.mcu=cortex-m3
Nucleo_144.menu.pnum.NUCLEO_F207ZG.build.board=NUCLEO_F207ZG
Nucleo_144.menu.pnum.NUCLEO_F207ZG.build.series=STM32F2xx
Nucleo_144.menu.pnum.NUCLEO_F207ZG.build.product_line=STM32F207xx
Nucleo_144.menu.pnum.NUCLEO_F207ZG.build.variant=NUCLEO_F207ZG
Nucleo_144.menu.pnum.NUCLEO_F207ZG.build.cmsis_lib_gcc=arm_cortexM3l_math
# NUCLEO_F429ZI board
# Support: USB HID, Serial1 (USART1 on PG9, PG14) and Serial2 (USART2 on PD6, PD5)
Nucleo_144.menu.pnum.NUCLEO_F429ZI=Nucleo F429ZI
Nucleo_144.menu.pnum.NUCLEO_F429ZI.node=NODE_F429ZI
Nucleo_144.menu.pnum.NUCLEO_F429ZI.upload.maximum_size=2097152
Nucleo_144.menu.pnum.NUCLEO_F429ZI.upload.maximum_data_size=262144
Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.board=NUCLEO_F429ZI
Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.series=STM32F4xx
Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.product_line=STM32F429xx
Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.variant=NUCLEO_F429ZI
Nucleo_144.menu.pnum.NUCLEO_F429ZI.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_F767ZI board
Nucleo_144.menu.pnum.NUCLEO_F767ZI=Nucleo F767ZI
Nucleo_144.menu.pnum.NUCLEO_F767ZI.node=NODE_F767ZI
Nucleo_144.menu.pnum.NUCLEO_F767ZI.upload.maximum_size=2097152
Nucleo_144.menu.pnum.NUCLEO_F767ZI.upload.maximum_data_size=524288
Nucleo_144.menu.pnum.NUCLEO_F767ZI.build.mcu=cortex-m7 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_144.menu.pnum.NUCLEO_F767ZI.build.board=NUCLEO_F767ZI
Nucleo_144.menu.pnum.NUCLEO_F767ZI.build.series=STM32F7xx
Nucleo_144.menu.pnum.NUCLEO_F767ZI.build.product_line=STM32F767xx
Nucleo_144.menu.pnum.NUCLEO_F767ZI.build.variant=NUCLEO_F767ZI
Nucleo_144.menu.pnum.NUCLEO_F767ZI.build.cmsis_lib_gcc=arm_cortexM7l_math
# NUCLEO_H743ZI board
Nucleo_144.menu.pnum.NUCLEO_H743ZI=Nucleo H743ZI
Nucleo_144.menu.pnum.NUCLEO_H743ZI.node=NODE_H743ZI
Nucleo_144.menu.pnum.NUCLEO_H743ZI.upload.maximum_size=2097152
Nucleo_144.menu.pnum.NUCLEO_H743ZI.upload.maximum_data_size=131072
Nucleo_144.menu.pnum.NUCLEO_H743ZI.build.mcu=cortex-m7 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_144.menu.pnum.NUCLEO_H743ZI.build.board=NUCLEO_H743ZI
Nucleo_144.menu.pnum.NUCLEO_H743ZI.build.series=STM32H7xx
Nucleo_144.menu.pnum.NUCLEO_H743ZI.build.product_line=STM32H743xx
Nucleo_144.menu.pnum.NUCLEO_H743ZI.build.variant=NUCLEO_H743ZI
Nucleo_144.menu.pnum.NUCLEO_H743ZI.build.cmsis_lib_gcc=arm_cortexM7l_math
Nucleo_144.menu.pnum.NUCLEO_H743ZI2=Nucleo H743ZI2
Nucleo_144.menu.pnum.NUCLEO_H743ZI2.node=NODE_H743ZI
Nucleo_144.menu.pnum.NUCLEO_H743ZI2.upload.maximum_size=2097152
Nucleo_144.menu.pnum.NUCLEO_H743ZI2.upload.maximum_data_size=131072
Nucleo_144.menu.pnum.NUCLEO_H743ZI2.build.mcu=cortex-m7 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_144.menu.pnum.NUCLEO_H743ZI2.build.board=NUCLEO_H743ZI2
Nucleo_144.menu.pnum.NUCLEO_H743ZI2.build.series=STM32H7xx
Nucleo_144.menu.pnum.NUCLEO_H743ZI2.build.product_line=STM32H743xx
Nucleo_144.menu.pnum.NUCLEO_H743ZI2.build.variant=NUCLEO_H743ZI
Nucleo_144.menu.pnum.NUCLEO_H743ZI2.build.cmsis_lib_gcc=arm_cortexM7l_math
# NUCLEO_L496ZG board
Nucleo_144.menu.pnum.NUCLEO_L496ZG=Nucleo L496ZG
Nucleo_144.menu.pnum.NUCLEO_L496ZG.node=NODE_L496ZG
Nucleo_144.menu.pnum.NUCLEO_L496ZG.upload.maximum_size=1048576
Nucleo_144.menu.pnum.NUCLEO_L496ZG.upload.maximum_data_size=327680
Nucleo_144.menu.pnum.NUCLEO_L496ZG.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_144.menu.pnum.NUCLEO_L496ZG.build.board=NUCLEO_L496ZG
Nucleo_144.menu.pnum.NUCLEO_L496ZG.build.series=STM32L4xx
Nucleo_144.menu.pnum.NUCLEO_L496ZG.build.product_line=STM32L496xx
Nucleo_144.menu.pnum.NUCLEO_L496ZG.build.variant=NUCLEO_L496ZG
Nucleo_144.menu.pnum.NUCLEO_L496ZG.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_L496ZG-P board
Nucleo_144.menu.pnum.NUCLEO_L496ZG-P=Nucleo L496ZG-P
Nucleo_144.menu.pnum.NUCLEO_L496ZG-P.node=NODE_L496ZG
Nucleo_144.menu.pnum.NUCLEO_L496ZG-P.upload.maximum_size=1048576
Nucleo_144.menu.pnum.NUCLEO_L496ZG-P.upload.maximum_data_size=327680
Nucleo_144.menu.pnum.NUCLEO_L496ZG-P.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_144.menu.pnum.NUCLEO_L496ZG-P.build.board=NUCLEO_L496ZG_P
Nucleo_144.menu.pnum.NUCLEO_L496ZG-P.build.series=STM32L4xx
Nucleo_144.menu.pnum.NUCLEO_L496ZG-P.build.product_line=STM32L496xx
Nucleo_144.menu.pnum.NUCLEO_L496ZG-P.build.variant=NUCLEO_L496ZG
Nucleo_144.menu.pnum.NUCLEO_L496ZG-P.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_L4R5ZI board
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI=Nucleo L4R5ZI
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI.node=NODE_L4R5ZI
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI.upload.maximum_size=2097152
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI.upload.maximum_data_size=655360
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI.build.board=NUCLEO_L4R5ZI
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI.build.series=STM32L4xx
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI.build.product_line=STM32L4R5xx
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI.build.variant=NUCLEO_L4R5ZI
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_L4R5ZI-P board
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI-P=Nucleo L4R5ZI-P
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI-P.node=NODE_L4R5ZI
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI-P.upload.maximum_size=2097152
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI-P.upload.maximum_data_size=655360
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI-P.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI-P.build.board=NUCLEO_L4R5ZI_P
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI-P.build.series=STM32L4xx
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI-P.build.product_line=STM32L4R5xx
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI-P.build.variant=NUCLEO_L4R5ZI
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI-P.build.cmsis_lib_gcc=arm_cortexM4l_math
# Upload menu
Nucleo_144.menu.upload_method.MassStorage=Mass Storage
Nucleo_144.menu.upload_method.MassStorage.upload.protocol=
Nucleo_144.menu.upload_method.MassStorage.upload.tool=massStorageCopy
Nucleo_144.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
Nucleo_144.menu.upload_method.swdMethod.upload.protocol=0
Nucleo_144.menu.upload_method.swdMethod.upload.options=-g
Nucleo_144.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
Nucleo_144.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
Nucleo_144.menu.upload_method.serialMethod.upload.protocol=1
Nucleo_144.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
Nucleo_144.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
Nucleo_144.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
Nucleo_144.menu.upload_method.dfuMethod.upload.protocol=2
Nucleo_144.menu.upload_method.dfuMethod.upload.options=-g
Nucleo_144.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
################################################################################
# Nucleo 64 boards
Nucleo_64.name=Nucleo-64
Nucleo_64.build.vid=0x0483
Nucleo_64.build.core=arduino
Nucleo_64.build.board=Nucleo_64
Nucleo_64.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
# NUCLEO_F030R8 board
Nucleo_64.menu.pnum.NUCLEO_F030R8=Nucleo F030R8
Nucleo_64.menu.pnum.NUCLEO_F030R8.node="NODE_F030R8,NUCLEO"
Nucleo_64.menu.pnum.NUCLEO_F030R8.upload.maximum_size=65536
Nucleo_64.menu.pnum.NUCLEO_F030R8.upload.maximum_data_size=8192
Nucleo_64.menu.pnum.NUCLEO_F030R8.build.mcu=cortex-m0
Nucleo_64.menu.pnum.NUCLEO_F030R8.build.board=NUCLEO_F030R8
Nucleo_64.menu.pnum.NUCLEO_F030R8.build.series=STM32F0xx
Nucleo_64.menu.pnum.NUCLEO_F030R8.build.product_line=STM32F030x8
Nucleo_64.menu.pnum.NUCLEO_F030R8.build.variant=NUCLEO_F030R8
Nucleo_64.menu.pnum.NUCLEO_F030R8.build.cmsis_lib_gcc=arm_cortexM0l_math
# NUCLEO_F091RC board
Nucleo_64.menu.pnum.NUCLEO_F091RC=Nucleo F091RC
Nucleo_64.menu.pnum.NUCLEO_F091RC.node=NODE_F091RC
Nucleo_64.menu.pnum.NUCLEO_F091RC.upload.maximum_size=262144
Nucleo_64.menu.pnum.NUCLEO_F091RC.upload.maximum_data_size=32768
Nucleo_64.menu.pnum.NUCLEO_F091RC.build.mcu=cortex-m0
Nucleo_64.menu.pnum.NUCLEO_F091RC.build.board=NUCLEO_F091RC
Nucleo_64.menu.pnum.NUCLEO_F091RC.build.series=STM32F0xx
Nucleo_64.menu.pnum.NUCLEO_F091RC.build.product_line=STM32F091xC
Nucleo_64.menu.pnum.NUCLEO_F091RC.build.variant=NUCLEO_F091RC
Nucleo_64.menu.pnum.NUCLEO_F091RC.build.cmsis_lib_gcc=arm_cortexM0l_math
# NUCLEO_F103RB board
Nucleo_64.menu.pnum.NUCLEO_F103RB=Nucleo F103RB
Nucleo_64.menu.pnum.NUCLEO_F103RB.node="NODE_F103RB,NUCLEO"
Nucleo_64.menu.pnum.NUCLEO_F103RB.upload.maximum_size=131072
Nucleo_64.menu.pnum.NUCLEO_F103RB.upload.maximum_data_size=20480
Nucleo_64.menu.pnum.NUCLEO_F103RB.build.mcu=cortex-m3
Nucleo_64.menu.pnum.NUCLEO_F103RB.build.board=NUCLEO_F103RB
Nucleo_64.menu.pnum.NUCLEO_F103RB.build.series=STM32F1xx
Nucleo_64.menu.pnum.NUCLEO_F103RB.build.product_line=STM32F103xB
Nucleo_64.menu.pnum.NUCLEO_F103RB.build.variant=NUCLEO_F103RB
Nucleo_64.menu.pnum.NUCLEO_F103RB.build.cmsis_lib_gcc=arm_cortexM3l_math
# NUCLEO_F302R8 board
Nucleo_64.menu.pnum.NUCLEO_F302R8=Nucleo F302R8
Nucleo_64.menu.pnum.NUCLEO_F302R8.node=NODE_F302R8
Nucleo_64.menu.pnum.NUCLEO_F302R8.upload.maximum_size=65536
Nucleo_64.menu.pnum.NUCLEO_F302R8.upload.maximum_data_size=16384
Nucleo_64.menu.pnum.NUCLEO_F302R8.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_64.menu.pnum.NUCLEO_F302R8.build.board=NUCLEO_F302R8
Nucleo_64.menu.pnum.NUCLEO_F302R8.build.series=STM32F3xx
Nucleo_64.menu.pnum.NUCLEO_F302R8.build.product_line=STM32F302x8
Nucleo_64.menu.pnum.NUCLEO_F302R8.build.variant=NUCLEO_F302R8
Nucleo_64.menu.pnum.NUCLEO_F302R8.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_F303RE board
Nucleo_64.menu.pnum.NUCLEO_F303RE=Nucleo F303RE
Nucleo_64.menu.pnum.NUCLEO_F303RE.node=NODE_F303RE
Nucleo_64.menu.pnum.NUCLEO_F303RE.upload.maximum_size=524288
Nucleo_64.menu.pnum.NUCLEO_F303RE.upload.maximum_data_size=65536
Nucleo_64.menu.pnum.NUCLEO_F303RE.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_64.menu.pnum.NUCLEO_F303RE.build.board=NUCLEO_F303RE
Nucleo_64.menu.pnum.NUCLEO_F303RE.build.series=STM32F3xx
Nucleo_64.menu.pnum.NUCLEO_F303RE.build.product_line=STM32F303xE
Nucleo_64.menu.pnum.NUCLEO_F303RE.build.variant=NUCLEO_F303RE
Nucleo_64.menu.pnum.NUCLEO_F303RE.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_F401RE board
Nucleo_64.menu.pnum.NUCLEO_F401RE=Nucleo F401RE
Nucleo_64.menu.pnum.NUCLEO_F401RE.node=NODE_F401RE
Nucleo_64.menu.pnum.NUCLEO_F401RE.upload.maximum_size=524288
Nucleo_64.menu.pnum.NUCLEO_F401RE.upload.maximum_data_size=98304
Nucleo_64.menu.pnum.NUCLEO_F401RE.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_64.menu.pnum.NUCLEO_F401RE.build.board=NUCLEO_F401RE
Nucleo_64.menu.pnum.NUCLEO_F401RE.build.series=STM32F4xx
Nucleo_64.menu.pnum.NUCLEO_F401RE.build.product_line=STM32F401xE
Nucleo_64.menu.pnum.NUCLEO_F401RE.build.variant=NUCLEO_F401RE
Nucleo_64.menu.pnum.NUCLEO_F401RE.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_F411RE board
Nucleo_64.menu.pnum.NUCLEO_F411RE=Nucleo F411RE
Nucleo_64.menu.pnum.NUCLEO_F411RE.node="NODE_F411RE,NUCLEO"
Nucleo_64.menu.pnum.NUCLEO_F411RE.upload.maximum_size=524288
Nucleo_64.menu.pnum.NUCLEO_F411RE.upload.maximum_data_size=131072
Nucleo_64.menu.pnum.NUCLEO_F411RE.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_64.menu.pnum.NUCLEO_F411RE.build.board=NUCLEO_F411RE
Nucleo_64.menu.pnum.NUCLEO_F411RE.build.series=STM32F4xx
Nucleo_64.menu.pnum.NUCLEO_F411RE.build.product_line=STM32F411xE
Nucleo_64.menu.pnum.NUCLEO_F411RE.build.variant=NUCLEO_F411RE
Nucleo_64.menu.pnum.NUCLEO_F411RE.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_F446RE board
Nucleo_64.menu.pnum.NUCLEO_F446RE=Nucleo F446RE
Nucleo_64.menu.pnum.NUCLEO_F446RE.node=NODE_F446RE
Nucleo_64.menu.pnum.NUCLEO_F446RE.upload.maximum_size=524288
Nucleo_64.menu.pnum.NUCLEO_F446RE.upload.maximum_data_size=131072
Nucleo_64.menu.pnum.NUCLEO_F446RE.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_64.menu.pnum.NUCLEO_F446RE.build.board=NUCLEO_F446RE
Nucleo_64.menu.pnum.NUCLEO_F446RE.build.series=STM32F4xx
Nucleo_64.menu.pnum.NUCLEO_F446RE.build.product_line=STM32F446xx
Nucleo_64.menu.pnum.NUCLEO_F446RE.build.variant=NUCLEO_F446RE
Nucleo_64.menu.pnum.NUCLEO_F446RE.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_G071RB board
Nucleo_64.menu.pnum.NUCLEO_G071RB=Nucleo G071RB
Nucleo_64.menu.pnum.NUCLEO_G071RB.node=NODE_G071RB
Nucleo_64.menu.pnum.NUCLEO_G071RB.upload.maximum_size=131072
Nucleo_64.menu.pnum.NUCLEO_G071RB.upload.maximum_data_size=32768
Nucleo_64.menu.pnum.NUCLEO_G071RB.build.mcu=cortex-m0plus
Nucleo_64.menu.pnum.NUCLEO_G071RB.build.board=NUCLEO_G071RB
Nucleo_64.menu.pnum.NUCLEO_G071RB.build.series=STM32G0xx
Nucleo_64.menu.pnum.NUCLEO_G071RB.build.product_line=STM32G071xx
Nucleo_64.menu.pnum.NUCLEO_G071RB.build.variant=NUCLEO_G071RB
Nucleo_64.menu.pnum.NUCLEO_G071RB.build.cmsis_lib_gcc=arm_cortexM0l_math
Nucleo_64.menu.pnum.NUCLEO_G071RB.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -D__CORTEX_SC=0
# NUCLEO_L053R8 board
Nucleo_64.menu.pnum.NUCLEO_L053R8=Nucleo L053R8
Nucleo_64.menu.pnum.NUCLEO_L053R8.node=NODE_L053R8
Nucleo_64.menu.pnum.NUCLEO_L053R8.upload.maximum_size=65536
Nucleo_64.menu.pnum.NUCLEO_L053R8.upload.maximum_data_size=8192
Nucleo_64.menu.pnum.NUCLEO_L053R8.build.mcu=cortex-m0plus
Nucleo_64.menu.pnum.NUCLEO_L053R8.build.board=NUCLEO_L053R8
Nucleo_64.menu.pnum.NUCLEO_L053R8.build.series=STM32L0xx
Nucleo_64.menu.pnum.NUCLEO_L053R8.build.product_line=STM32L053xx
Nucleo_64.menu.pnum.NUCLEO_L053R8.build.variant=NUCLEO_L053R8
Nucleo_64.menu.pnum.NUCLEO_L053R8.build.cmsis_lib_gcc=arm_cortexM0l_math
Nucleo_64.menu.pnum.NUCLEO_L053R8.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -D__CORTEX_SC=0
# NUCLEO_L073RZ board
Nucleo_64.menu.pnum.NUCLEO_L073RZ=Nucleo L073RZ
Nucleo_64.menu.pnum.NUCLEO_L073RZ.node=NODE_L073RZ
Nucleo_64.menu.pnum.NUCLEO_L073RZ.upload.maximum_size=196608
Nucleo_64.menu.pnum.NUCLEO_L073RZ.upload.maximum_data_size=20480
Nucleo_64.menu.pnum.NUCLEO_L073RZ.build.mcu=cortex-m0plus
Nucleo_64.menu.pnum.NUCLEO_L073RZ.build.board=NUCLEO_L073RZ
Nucleo_64.menu.pnum.NUCLEO_L073RZ.build.series=STM32L0xx
Nucleo_64.menu.pnum.NUCLEO_L073RZ.build.product_line=STM32L073xx
Nucleo_64.menu.pnum.NUCLEO_L073RZ.build.variant=NUCLEO_L073RZ
Nucleo_64.menu.pnum.NUCLEO_L073RZ.build.cmsis_lib_gcc=arm_cortexM0l_math
Nucleo_64.menu.pnum.NUCLEO_L073RZ.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -D__CORTEX_SC=0
# NUCLEO_L152RE board
Nucleo_64.menu.pnum.NUCLEO_L152RE=Nucleo L152RE
Nucleo_64.menu.pnum.NUCLEO_L152RE.node="NODE_L152RE,NUCLEO"
Nucleo_64.menu.pnum.NUCLEO_L152RE.upload.maximum_size=524288
Nucleo_64.menu.pnum.NUCLEO_L152RE.upload.maximum_data_size=81920
Nucleo_64.menu.pnum.NUCLEO_L152RE.build.mcu=cortex-m3
Nucleo_64.menu.pnum.NUCLEO_L152RE.build.board=NUCLEO_L152RE
Nucleo_64.menu.pnum.NUCLEO_L152RE.build.series=STM32L1xx
Nucleo_64.menu.pnum.NUCLEO_L152RE.build.product_line=STM32L152xE
Nucleo_64.menu.pnum.NUCLEO_L152RE.build.variant=NUCLEO_L152RE
Nucleo_64.menu.pnum.NUCLEO_L152RE.build.cmsis_lib_gcc=arm_cortexM3l_math
# NUCLEO_L452RE board
Nucleo_64.menu.pnum.NUCLEO_L452RE=Nucleo L452RE
Nucleo_64.menu.pnum.NUCLEO_L452RE.node=NODE_L452RE
Nucleo_64.menu.pnum.NUCLEO_L452RE.upload.maximum_size=524288
Nucleo_64.menu.pnum.NUCLEO_L452RE.upload.maximum_data_size=163840
Nucleo_64.menu.pnum.NUCLEO_L452RE.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_64.menu.pnum.NUCLEO_L452RE.build.board=NUCLEO_L452RE
Nucleo_64.menu.pnum.NUCLEO_L452RE.build.series=STM32L4xx
Nucleo_64.menu.pnum.NUCLEO_L452RE.build.product_line=STM32L452xx
Nucleo_64.menu.pnum.NUCLEO_L452RE.build.variant=NUCLEO_L452RE
Nucleo_64.menu.pnum.NUCLEO_L452RE.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_L476RG board
# Support: Serial1 (USART1 on PA10, PA9)
Nucleo_64.menu.pnum.NUCLEO_L476RG=Nucleo L476RG
Nucleo_64.menu.pnum.NUCLEO_L476RG.node=NODE_L476RG
Nucleo_64.menu.pnum.NUCLEO_L476RG.upload.maximum_size=1048576
Nucleo_64.menu.pnum.NUCLEO_L476RG.upload.maximum_data_size=98304
Nucleo_64.menu.pnum.NUCLEO_L476RG.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_64.menu.pnum.NUCLEO_L476RG.build.board=NUCLEO_L476RG
Nucleo_64.menu.pnum.NUCLEO_L476RG.build.series=STM32L4xx
Nucleo_64.menu.pnum.NUCLEO_L476RG.build.product_line=STM32L476xx
Nucleo_64.menu.pnum.NUCLEO_L476RG.build.variant=NUCLEO_L476RG
Nucleo_64.menu.pnum.NUCLEO_L476RG.build.cmsis_lib_gcc=arm_cortexM4l_math
# PNUCLEO_WB55RG board
Nucleo_64.menu.pnum.PNUCLEO_WB55RG=P-Nucleo WB55RG
Nucleo_64.menu.pnum.PNUCLEO_WB55RG.node=NODE_WB55RG
Nucleo_64.menu.pnum.PNUCLEO_WB55RG.upload.maximum_size=524288
Nucleo_64.menu.pnum.PNUCLEO_WB55RG.upload.maximum_data_size=196604
Nucleo_64.menu.pnum.PNUCLEO_WB55RG.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_64.menu.pnum.PNUCLEO_WB55RG.build.board=PNUCLEO_WB55RG
Nucleo_64.menu.pnum.PNUCLEO_WB55RG.build.series=STM32WBxx
Nucleo_64.menu.pnum.PNUCLEO_WB55RG.build.product_line=STM32WB55xx
Nucleo_64.menu.pnum.PNUCLEO_WB55RG.build.variant=PNUCLEO_WB55RG
Nucleo_64.menu.pnum.PNUCLEO_WB55RG.build.cmsis_lib_gcc=arm_cortexM4l_math
# Upload menu
Nucleo_64.menu.upload_method.MassStorage=Mass Storage
Nucleo_64.menu.upload_method.MassStorage.upload.protocol=
Nucleo_64.menu.upload_method.MassStorage.upload.tool=massStorageCopy
Nucleo_64.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
Nucleo_64.menu.upload_method.swdMethod.upload.protocol=0
Nucleo_64.menu.upload_method.swdMethod.upload.options=-g
Nucleo_64.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
Nucleo_64.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
Nucleo_64.menu.upload_method.serialMethod.upload.protocol=1
Nucleo_64.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
Nucleo_64.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
Nucleo_64.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
Nucleo_64.menu.upload_method.dfuMethod.upload.protocol=2
Nucleo_64.menu.upload_method.dfuMethod.upload.options=-g
Nucleo_64.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
################################################################################
# Nucleo 32 boards
Nucleo_32.name=Nucleo-32
Nucleo_32.build.vid=0x0483
Nucleo_32.build.core=arduino
Nucleo_32.build.board=Nucleo_32
Nucleo_32.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
# NUCLEO_L031K6 board
Nucleo_32.menu.pnum.NUCLEO_L031K6=Nucleo L031K6
Nucleo_32.menu.pnum.NUCLEO_L031K6.node=NODE_L031K6
Nucleo_32.menu.pnum.NUCLEO_L031K6.upload.maximum_size=32768
Nucleo_32.menu.pnum.NUCLEO_L031K6.upload.maximum_data_size=8192
Nucleo_32.menu.pnum.NUCLEO_L031K6.build.mcu=cortex-m0plus
Nucleo_32.menu.pnum.NUCLEO_L031K6.build.board=NUCLEO_L031K6
Nucleo_32.menu.pnum.NUCLEO_L031K6.build.series=STM32L0xx
Nucleo_32.menu.pnum.NUCLEO_L031K6.build.product_line=STM32L031xx
Nucleo_32.menu.pnum.NUCLEO_L031K6.build.variant=NUCLEO_L031K6
Nucleo_32.menu.pnum.NUCLEO_L031K6.build.cmsis_lib_gcc=arm_cortexM0l_math
# NUCLEO_L412KB board
Nucleo_32.menu.pnum.NUCLEO_L412KB=Nucleo L412KB
Nucleo_32.menu.pnum.NUCLEO_L412KB.node=NODE_L412KB
Nucleo_32.menu.pnum.NUCLEO_L412KB.upload.maximum_size=131072
Nucleo_32.menu.pnum.NUCLEO_L412KB.upload.maximum_data_size=40960
Nucleo_32.menu.pnum.NUCLEO_L412KB.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_32.menu.pnum.NUCLEO_L412KB.build.board=NUCLEO_L412KB
Nucleo_32.menu.pnum.NUCLEO_L412KB.build.series=STM32L4xx
Nucleo_32.menu.pnum.NUCLEO_L412KB.build.product_line=STM32L412xx
Nucleo_32.menu.pnum.NUCLEO_L412KB.build.variant=NUCLEO_L412KB
Nucleo_32.menu.pnum.NUCLEO_L412KB.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_L432KC board
Nucleo_32.menu.pnum.NUCLEO_L432KC=Nucleo L432KC
Nucleo_32.menu.pnum.NUCLEO_L432KC.node=NODE_L432KC
Nucleo_32.menu.pnum.NUCLEO_L432KC.upload.maximum_size=262144
Nucleo_32.menu.pnum.NUCLEO_L432KC.upload.maximum_data_size=65536
Nucleo_32.menu.pnum.NUCLEO_L432KC.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_32.menu.pnum.NUCLEO_L432KC.build.board=NUCLEO_L432KC
Nucleo_32.menu.pnum.NUCLEO_L432KC.build.series=STM32L4xx
Nucleo_32.menu.pnum.NUCLEO_L432KC.build.product_line=STM32L432xx
Nucleo_32.menu.pnum.NUCLEO_L432KC.build.variant=NUCLEO_L432KC
Nucleo_32.menu.pnum.NUCLEO_L432KC.build.cmsis_lib_gcc=arm_cortexM4l_math
# NUCLEO_F303K8 board
Nucleo_32.menu.pnum.NUCLEO_F303K8=Nucleo F303K8
Nucleo_32.menu.pnum.NUCLEO_F303K8.node=NODE_F303K8
Nucleo_32.menu.pnum.NUCLEO_F303K8.upload.maximum_size=65536
Nucleo_32.menu.pnum.NUCLEO_F303K8.upload.maximum_data_size=12288
Nucleo_32.menu.pnum.NUCLEO_F303K8.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Nucleo_32.menu.pnum.NUCLEO_F303K8.build.board=NUCLEO_F303K8
Nucleo_32.menu.pnum.NUCLEO_F303K8.build.series=STM32F3xx
Nucleo_32.menu.pnum.NUCLEO_F303K8.build.product_line=STM32F303x8
Nucleo_32.menu.pnum.NUCLEO_F303K8.build.variant=NUCLEO_F303K8
Nucleo_32.menu.pnum.NUCLEO_F303K8.build.cmsis_lib_gcc=arm_cortexM4l_math
# Upload menu
Nucleo_32.menu.upload_method.MassStorage=Mass Storage
Nucleo_32.menu.upload_method.MassStorage.upload.protocol=
Nucleo_32.menu.upload_method.MassStorage.upload.tool=massStorageCopy
Nucleo_32.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
Nucleo_32.menu.upload_method.swdMethod.upload.protocol=0
Nucleo_32.menu.upload_method.swdMethod.upload.options=-g
Nucleo_32.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
Nucleo_32.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
Nucleo_32.menu.upload_method.serialMethod.upload.protocol=1
Nucleo_32.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
Nucleo_32.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
Nucleo_32.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
Nucleo_32.menu.upload_method.dfuMethod.upload.protocol=2
Nucleo_32.menu.upload_method.dfuMethod.upload.options=-g
Nucleo_32.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
################################################################################
# Discovery boards
Disco.name=Discovery
Disco.build.vid=0x0483
Disco.build.core=arduino
Disco.build.board=Disco
Disco.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
# DISCO_F030R8 board
Disco.menu.pnum.DISCO_F030R8=STM32F030R8-DISCVL
Disco.menu.pnum.DISCO_F030R8.node="No_mass_storage_for_this_board_Use_STLink_upload_method"
Disco.menu.pnum.DISCO_F030R8.upload.maximum_size=65536
Disco.menu.pnum.DISCO_F030R8.upload.maximum_data_size=8192
Disco.menu.pnum.DISCO_F030R8.build.mcu=cortex-m0
Disco.menu.pnum.DISCO_F030R8.build.board=DISCO_F030R8
Disco.menu.pnum.DISCO_F030R8.build.series=STM32F0xx
Disco.menu.pnum.DISCO_F030R8.build.product_line=STM32F030x8
Disco.menu.pnum.DISCO_F030R8.build.variant=DISCO_F030R8
Disco.menu.pnum.DISCO_F030R8.build.cmsis_lib_gcc=arm_cortexM0l_math
# DISCO_F072RB board
Disco.menu.pnum.DISCO_F072RB=STM32F072B-DISCOVERY
Disco.menu.pnum.DISCO_F072RB.node="No_mass_storage_for_this_board_Use_STLink_upload_method"
Disco.menu.pnum.DISCO_F072RB.upload.maximum_size=131072
Disco.menu.pnum.DISCO_F072RB.upload.maximum_data_size=16384
Disco.menu.pnum.DISCO_F072RB.build.mcu=cortex-m0
Disco.menu.pnum.DISCO_F072RB.build.board=DISCO_F072RB
Disco.menu.pnum.DISCO_F072RB.build.series=STM32F0xx
Disco.menu.pnum.DISCO_F072RB.build.product_line=STM32F072xB
Disco.menu.pnum.DISCO_F072RB.build.variant=DISCO_F072RB
Disco.menu.pnum.DISCO_F072RB.build.cmsis_lib_gcc=arm_cortexM0l_math
#DISCO_F100RB board
Disco.menu.pnum.DISCO_F100RB=STM32F100RB-DISCVL
Disco.menu.pnum.DISCO_F100RB.node=DIS_F100RB
Disco.menu.pnum.DISCO_F100RB.upload.maximum_size=131071
Disco.menu.pnum.DISCO_F100RB.upload.maximum_data_size=8192
Disco.menu.pnum.DISCO_F100RB.build.mcu=cortex-m3
Disco.menu.pnum.DISCO_F100RB.build.board=DISCO_F100RB
Disco.menu.pnum.DISCO_F100RB.build.series=STM32F1xx
Disco.menu.pnum.DISCO_F100RB.build.product_line=STM32F100xB
Disco.menu.pnum.DISCO_F100RB.build.variant=DISCO_F100RB
Disco.menu.pnum.DISCO_F100RB.build.cmsis_lib_gcc=arm_cortexM3l_math
# DISCO_F407VG board
Disco.menu.pnum.DISCO_F407VG=STM32F407G-DISC1
Disco.menu.pnum.DISCO_F407VG.node=DIS_F407VG
Disco.menu.pnum.DISCO_F407VG.upload.maximum_size=1048576
Disco.menu.pnum.DISCO_F407VG.upload.maximum_data_size=196608
Disco.menu.pnum.DISCO_F407VG.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Disco.menu.pnum.DISCO_F407VG.build.board=DISCO_F407VG
Disco.menu.pnum.DISCO_F407VG.build.series=STM32F4xx
Disco.menu.pnum.DISCO_F407VG.build.product_line=STM32F407xx
Disco.menu.pnum.DISCO_F407VG.build.variant=DISCO_F407VG
Disco.menu.pnum.DISCO_F407VG.build.cmsis_lib_gcc=arm_cortexM4l_math
# DISCO_F746NG board
Disco.menu.pnum.DISCO_F746NG=STM32F746G-DISCOVERY
Disco.menu.pnum.DISCO_F746NG.node=DIS_F746NG
Disco.menu.pnum.DISCO_F746NG.upload.maximum_size=1048576
Disco.menu.pnum.DISCO_F746NG.upload.maximum_data_size=327680
Disco.menu.pnum.DISCO_F746NG.build.mcu=cortex-m7 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Disco.menu.pnum.DISCO_F746NG.build.board=DISCO_F746NG
Disco.menu.pnum.DISCO_F746NG.build.series=STM32F7xx
Disco.menu.pnum.DISCO_F746NG.build.product_line=STM32F746xx
Disco.menu.pnum.DISCO_F746NG.build.variant=DISCO_F746NG
Disco.menu.pnum.DISCO_F746NG.build.cmsis_lib_gcc=arm_cortexM7l_math
# DISCO_L475VG_IOT board
Disco.menu.pnum.DISCO_L475VG_IOT=STM32L475VG-DISCOVERY-IOT
Disco.menu.pnum.DISCO_L475VG_IOT.node=DIS_L4IOT
Disco.menu.pnum.DISCO_L475VG_IOT.upload.maximum_size=1048576
Disco.menu.pnum.DISCO_L475VG_IOT.upload.maximum_data_size=98304
Disco.menu.pnum.DISCO_L475VG_IOT.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Disco.menu.pnum.DISCO_L475VG_IOT.build.board=DISCO_L475VG_IOT
Disco.menu.pnum.DISCO_L475VG_IOT.build.series=STM32L4xx
Disco.menu.pnum.DISCO_L475VG_IOT.build.product_line=STM32L475xx
Disco.menu.pnum.DISCO_L475VG_IOT.build.variant=DISCO_L475VG_IOT
Disco.menu.pnum.DISCO_L475VG_IOT.build.cmsis_lib_gcc=arm_cortexM4l_math
# DISCO-L072CZ-LRWAN1 board
Disco.menu.pnum.DISCO_L072CZ_LRWAN1=Discovery L072CZ-LRWAN1
Disco.menu.pnum.DISCO_L072CZ_LRWAN1.node="DIS_L072Z,NODE_L072CZ"
Disco.menu.pnum.DISCO_L072CZ_LRWAN1.upload.maximum_size=196608
Disco.menu.pnum.DISCO_L072CZ_LRWAN1.upload.maximum_data_size=20480
Disco.menu.pnum.DISCO_L072CZ_LRWAN1.build.mcu=cortex-m0plus
Disco.menu.pnum.DISCO_L072CZ_LRWAN1.build.board=DISCO_L072CZ_LRWAN1
Disco.menu.pnum.DISCO_L072CZ_LRWAN1.build.series=STM32L0xx
Disco.menu.pnum.DISCO_L072CZ_LRWAN1.build.product_line=STM32L072xx
Disco.menu.pnum.DISCO_L072CZ_LRWAN1.build.variant=DISCO_L072CZ_LRWAN1
Disco.menu.pnum.DISCO_L072CZ_LRWAN1.build.cmsis_lib_gcc=arm_cortexM0l_math
Disco.menu.pnum.DISCO_L072CZ_LRWAN1.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -D__CORTEX_SC=0
# Upload menu
Disco.menu.upload_method.MassStorage=Mass Storage
Disco.menu.upload_method.MassStorage.upload.protocol=
Disco.menu.upload_method.MassStorage.upload.tool=massStorageCopy
Disco.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
Disco.menu.upload_method.swdMethod.upload.protocol=0
Disco.menu.upload_method.swdMethod.upload.options=-g
Disco.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
Disco.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
Disco.menu.upload_method.serialMethod.upload.protocol=1
Disco.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
Disco.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
Disco.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
Disco.menu.upload_method.dfuMethod.upload.protocol=2
Disco.menu.upload_method.dfuMethod.upload.options=-g
Disco.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
################################################################################
# Other boards
###############################
# Generic F0
GenF0.name=Generic STM32F0 series
GenF0.build.core=arduino
GenF0.build.board=GenF0
GenF0.build.extra_flags=-D{build.product_line} {build.xSerial}
# DEMO_F030F4 board
GenF0.menu.pnum.DEMO_F030F4=STM32F030F4 Demo board
GenF0.menu.pnum.DEMO_F030F4.upload.maximum_data_size=4096
GenF0.menu.pnum.DEMO_F030F4.upload.maximum_size=16384
GenF0.menu.pnum.DEMO_F030F4.build.mcu=cortex-m0
GenF0.menu.pnum.DEMO_F030F4.build.board=DEMO_F030F4
GenF0.menu.pnum.DEMO_F030F4.build.series=STM32F0xx
GenF0.menu.pnum.DEMO_F030F4.build.product_line=STM32F030x6
GenF0.menu.pnum.DEMO_F030F4.build.variant=DEMO_F030F4
GenF0.menu.pnum.DEMO_F030F4.build.cmsis_lib_gcc=arm_cortexM0l_math
# YAS-0_F070CB board
GenF0.menu.pnum.YAS-0_F070CB=YAS-0
GenF0.menu.pnum.YAS-0_F070CB.upload.maximum_size=122880
GenF0.menu.pnum.YAS-0_F070CB.upload.maximum_data_size=15168
GenF0.menu.pnum.YAS-0_F070CB.build.mcu=cortex-m0
GenF0.menu.pnum.YAS-0_F070CB.build.board=YAS-0_F070CB
GenF0.menu.pnum.YAS-0_F070CB.build.series=STM32F0xx
GenF0.menu.pnum.YAS-0_F070CB.build.product_line=STM32F070xB
GenF0.menu.pnum.YAS-0_F070CB.build.variant=YAS-0_F070CB
GenF0.menu.pnum.YAS-0_F070CB.build.cmsis_lib_gcc=arm_cortexM0l_math
GenF0.menu.pnum.YAS-0_F070CB.build.startup_file=-DCUSTOM_STARTUP_FILE
GenF0.menu.pnum.YAS-0_F070CB.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -DVECT_TAB_OFFSET=0x2000
# Upload menu
GenF0.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
GenF0.menu.upload_method.swdMethod.upload.protocol=0
GenF0.menu.upload_method.swdMethod.upload.options=-g
GenF0.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
GenF0.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
GenF0.menu.upload_method.serialMethod.upload.protocol=1
GenF0.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
GenF0.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
GenF0.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
GenF0.menu.upload_method.dfuMethod.upload.protocol=2
GenF0.menu.upload_method.dfuMethod.upload.options=-g
GenF0.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
################################################################################
# Generic F1
GenF1.name=Generic STM32F1 series
GenF1.build.vid=0x0483
GenF1.build.core=arduino
GenF1.build.board=GenF1
GenF1.build.mcu=cortex-m3
GenF1.build.series=STM32F1xx
GenF1.build.cmsis_lib_gcc=arm_cortexM3l_math
GenF1.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} {build.bootloader_flags}
# BLUEPILL_F103C6 board
GenF1.menu.pnum.BLUEPILL_F103C6=BluePill F103C6 (32K)
GenF1.menu.pnum.BLUEPILL_F103C6.upload.maximum_size=32768
GenF1.menu.pnum.BLUEPILL_F103C6.upload.maximum_data_size=10240
GenF1.menu.pnum.BLUEPILL_F103C6.build.board=BLUEPILL_F103C6
GenF1.menu.pnum.BLUEPILL_F103C6.build.product_line=STM32F103x6
GenF1.menu.pnum.BLUEPILL_F103C6.build.variant=PILL_F103XX
# BLUEPILL_F103C8 board
GenF1.menu.pnum.BLUEPILL_F103C8=BluePill F103C8
GenF1.menu.pnum.BLUEPILL_F103C8.upload.maximum_size=65536
GenF1.menu.pnum.BLUEPILL_F103C8.upload.maximum_data_size=20480
GenF1.menu.pnum.BLUEPILL_F103C8.build.board=BLUEPILL_F103C8
GenF1.menu.pnum.BLUEPILL_F103C8.build.product_line=STM32F103xB
GenF1.menu.pnum.BLUEPILL_F103C8.build.variant=PILL_F103XX
GenF1.menu.pnum.BLUEPILL_F103C8B=BluePill F103C8 (128k)
GenF1.menu.pnum.BLUEPILL_F103C8B.upload.maximum_size=131072
GenF1.menu.pnum.BLUEPILL_F103C8B.upload.maximum_data_size=20480
GenF1.menu.pnum.BLUEPILL_F103C8B.build.board=BLUEPILL_F103C8
GenF1.menu.pnum.BLUEPILL_F103C8B.build.product_line=STM32F103xB
GenF1.menu.pnum.BLUEPILL_F103C8B.build.variant=PILL_F103XX
# BLACKPILL_F103C8 board
GenF1.menu.pnum.BLACKPILL_F103C8=BlackPill F103C8
GenF1.menu.pnum.BLACKPILL_F103C8.upload.maximum_size=65536
GenF1.menu.pnum.BLACKPILL_F103C8.upload.maximum_data_size=20480
GenF1.menu.pnum.BLACKPILL_F103C8.build.board=BLACKPILL_F103C8
GenF1.menu.pnum.BLACKPILL_F103C8.build.product_line=STM32F103xB
GenF1.menu.pnum.BLACKPILL_F103C8.build.variant=PILL_F103XX
GenF1.menu.pnum.BLACKPILL_F103C8B=BlackPill F103C8 (128k)
GenF1.menu.pnum.BLACKPILL_F103C8B.upload.maximum_size=131072
GenF1.menu.pnum.BLACKPILL_F103C8B.upload.maximum_data_size=20480
GenF1.menu.pnum.BLACKPILL_F103C8B.build.board=BLACKPILL_F103C8
GenF1.menu.pnum.BLACKPILL_F103C8B.build.product_line=STM32F103xB
GenF1.menu.pnum.BLACKPILL_F103C8B.build.variant=PILL_F103XX
# MAPLEMINI_F103CB board
GenF1.menu.pnum.MAPLEMINI_F103CB=Maple Mini F103CB
GenF1.menu.pnum.MAPLEMINI_F103CB.upload.maximum_size=131072
GenF1.menu.pnum.MAPLEMINI_F103CB.upload.maximum_data_size=20480
GenF1.menu.pnum.MAPLEMINI_F103CB.build.board=MAPLEMINI_F103CB
GenF1.menu.pnum.MAPLEMINI_F103CB.build.product_line=STM32F103xB
GenF1.menu.pnum.MAPLEMINI_F103CB.build.variant=MAPLEMINI_F103CB
# HY-TinySTM103TB board
GenF1.menu.pnum.HY_TinySTM103TB=HY-TinySTM103TB
GenF1.menu.pnum.HY_TinySTM103TB.upload.maximum_size=131072
GenF1.menu.pnum.HY_TinySTM103TB.upload.maximum_data_size=20480
GenF1.menu.pnum.HY_TinySTM103TB.build.board=HY_TinySTM103TB
GenF1.menu.pnum.HY_TinySTM103TB.build.product_line=STM32F103xB
GenF1.menu.pnum.HY_TinySTM103TB.build.variant=HY_TinySTM103T
# Upload menu
GenF1.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
GenF1.menu.upload_method.swdMethod.upload.protocol=0
GenF1.menu.upload_method.swdMethod.upload.options=-g
GenF1.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
GenF1.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
GenF1.menu.upload_method.serialMethod.upload.protocol=1
GenF1.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
GenF1.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
GenF1.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
GenF1.menu.upload_method.dfuMethod.upload.protocol=2
GenF1.menu.upload_method.dfuMethod.upload.options=-g
GenF1.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
GenF1.menu.upload_method.bmpMethod=BMP (Black Magic Probe)
GenF1.menu.upload_method.bmpMethod.upload.protocol=gdb_bmp
GenF1.menu.upload_method.bmpMethod.upload.tool=bmp_upload
GenF1.menu.upload_method.hidMethod=HID Bootloader 2.2
GenF1.menu.upload_method.hidMethod.upload.protocol=hid22
GenF1.menu.upload_method.hidMethod.upload.tool=hid_upload
GenF1.menu.upload_method.hidMethod.build.flash_offset=0x800
GenF1.menu.upload_method.hidMethod.build.bootloader_flags=-DBL_HID -DVECT_TAB_OFFSET={build.flash_offset}
GenF1.menu.upload_method.dfu2Method=Maple DFU Bootloader 2.0
GenF1.menu.upload_method.dfu2Method.upload.protocol=maple
GenF1.menu.upload_method.dfu2Method.upload.tool=maple_upload
GenF1.menu.upload_method.dfu2Method.upload.usbID=1EAF:0003
GenF1.menu.upload_method.dfu2Method.upload.altID=2
GenF1.menu.upload_method.dfu2Method.build.flash_offset=0x2000
GenF1.menu.upload_method.dfu2Method.build.bootloader_flags=-DBL_LEGACY_LEAF -DVECT_TAB_OFFSET={build.flash_offset}
GenF1.menu.upload_method.dfuoMethod=Maple DFU Bootloader original
GenF1.menu.upload_method.dfuoMethod.upload.protocol=maple
GenF1.menu.upload_method.dfuoMethod.upload.tool=maple_upload
GenF1.menu.upload_method.dfuoMethod.upload.usbID=1EAF:0003
GenF1.menu.upload_method.dfuoMethod.upload.altID=1
GenF1.menu.upload_method.dfuoMethod.build.flash_offset=0x5000
GenF1.menu.upload_method.dfuoMethod.build.bootloader_flags=-DBL_LEGACY_LEAF -DVECT_TAB_OFFSET={build.flash_offset}
################################################################################
# Generic F3
GenF3.name=Generic STM32F3 series
GenF3.build.vid=0x0483
GenF3.build.core=arduino
GenF3.build.board=GenF3
GenF3.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} {build.bootloader_flags}
GenF3.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
GenF3.build.series=STM32F3xx
GenF3.build.cmsis_lib_gcc=arm_cortexM4l_math
# BLACKPILL_F303CC
GenF3.menu.pnum.BLACKPILL_F303XX=RobotDyn BlackPill F303CC
GenF3.menu.pnum.BLACKPILL_F303XX.upload.maximum_size=262144
GenF3.menu.pnum.BLACKPILL_F303XX.upload.maximum_data_size=40960
GenF3.menu.pnum.BLACKPILL_F303XX.build.board=BLACKPILL_F303CC
GenF3.menu.pnum.BLACKPILL_F303XX.build.product_line=STM32F303xC
GenF3.menu.pnum.BLACKPILL_F303XX.build.variant=PILL_F303XX
# Upload menu
GenF3.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
GenF3.menu.upload_method.swdMethod.upload.protocol=0
GenF3.menu.upload_method.swdMethod.upload.options=-g
GenF3.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
GenF3.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
GenF3.menu.upload_method.serialMethod.upload.protocol=1
GenF3.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
GenF3.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
GenF3.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
GenF3.menu.upload_method.dfuMethod.upload.protocol=2
GenF3.menu.upload_method.dfuMethod.upload.options=-g
GenF3.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
GenF3.menu.upload_method.bmpMethod=BMP (Black Magic Probe)
GenF3.menu.upload_method.bmpMethod.upload.protocol=gdb_bmp
GenF3.menu.upload_method.bmpMethod.upload.tool=bmp_upload
################################################################################
# Generic F4
GenF4.name=Generic STM32F4 series
GenF4.build.vid=0x0483
GenF4.build.core=arduino
GenF4.build.board=GenF4
GenF4.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} {build.bootloader_flags}
GenF4.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
GenF4.build.series=STM32F4xx
GenF4.build.cmsis_lib_gcc=arm_cortexM4l_math
# Black F407VE
GenF4.menu.pnum.BLACK_F407VE=Black F407VE
GenF4.menu.pnum.BLACK_F407VE.upload.maximum_size=524288
GenF4.menu.pnum.BLACK_F407VE.upload.maximum_data_size=131072
GenF4.menu.pnum.BLACK_F407VE.build.board=BLACK_F407VE
GenF4.menu.pnum.BLACK_F407VE.build.product_line=STM32F407xx
GenF4.menu.pnum.BLACK_F407VE.build.variant=BLACK_F407XX
# Black F407VG
GenF4.menu.pnum.BLACK_F407VG=Black F407VG
GenF4.menu.pnum.BLACK_F407VG.upload.maximum_size=1048576
GenF4.menu.pnum.BLACK_F407VG.upload.maximum_data_size=131072
GenF4.menu.pnum.BLACK_F407VG.build.board=BLACK_F407VG
GenF4.menu.pnum.BLACK_F407VG.build.product_line=STM32F407xx
GenF4.menu.pnum.BLACK_F407VG.build.variant=BLACK_F407XX
# Black F407ZE
GenF4.menu.pnum.BLACK_F407ZE=Black F407ZE
GenF4.menu.pnum.BLACK_F407ZE.upload.maximum_size=524288
GenF4.menu.pnum.BLACK_F407ZE.upload.maximum_data_size=131072
GenF4.menu.pnum.BLACK_F407ZE.build.board=BLACK_F407ZE
GenF4.menu.pnum.BLACK_F407ZE.build.product_line=STM32F407xx
GenF4.menu.pnum.BLACK_F407ZE.build.variant=BLACK_F407XX
# Black F407ZG
GenF4.menu.pnum.BLACK_F407ZG=Black F407ZG
GenF4.menu.pnum.BLACK_F407ZG.upload.maximum_size=1048576
GenF4.menu.pnum.BLACK_F407ZG.upload.maximum_data_size=131072
GenF4.menu.pnum.BLACK_F407ZG.build.board=BLACK_F407ZG
GenF4.menu.pnum.BLACK_F407ZG.build.product_line=STM32F407xx
GenF4.menu.pnum.BLACK_F407ZG.build.variant=BLACK_F407XX
# Blue F407VE mini: http://wiki.stm32duino.com/index.php?title=Vcc-gnd.com_STM32F407VET6_Mini
GenF4.menu.pnum.BLUE_F407VE_Mini=Blue F407VE mini
GenF4.menu.pnum.BLUE_F407VE_Mini.upload.maximum_size=524288
GenF4.menu.pnum.BLUE_F407VE_Mini.upload.maximum_data_size=131072
GenF4.menu.pnum.BLUE_F407VE_Mini.build.board=BLUE_F407VE_Mini
GenF4.menu.pnum.BLUE_F407VE_Mini.build.product_line=STM32F407xx
GenF4.menu.pnum.BLUE_F407VE_Mini.build.variant=BLUE_F407VE_Mini
# DIYMROE STM32F407VGT board
GenF4.menu.pnum.DIYMROE_F407VGT=DIYMROE STM32F407VGT
GenF4.menu.pnum.DIYMROE_F407VGT.upload.maximum_size=1048576
GenF4.menu.pnum.DIYMROE_F407VGT.upload.maximum_data_size=131072
GenF4.menu.pnum.DIYMROE_F407VGT.build.board=DIYMROE_F407VGT
GenF4.menu.pnum.DIYMROE_F407VGT.build.product_line=STM32F407xx
GenF4.menu.pnum.DIYMROE_F407VGT.build.variant=DIYMROE_F407VGT
# FK407M1
GenF4.menu.pnum.FK407M1=FK407M1 STM32F407VET
GenF4.menu.pnum.FK407M1.upload.maximum_size=524288
GenF4.menu.pnum.FK407M1.upload.maximum_data_size=131072
GenF4.menu.pnum.FK407M1.build.board=FK407M1
GenF4.menu.pnum.FK407M1.build.product_line=STM32F407xx
GenF4.menu.pnum.FK407M1.build.variant=FK407M1
# Upload menu
GenF4.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
GenF4.menu.upload_method.swdMethod.upload.protocol=0
GenF4.menu.upload_method.swdMethod.upload.options=-g
GenF4.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
GenF4.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
GenF4.menu.upload_method.serialMethod.upload.protocol=1
GenF4.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
GenF4.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
GenF4.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
GenF4.menu.upload_method.dfuMethod.upload.protocol=2
GenF4.menu.upload_method.dfuMethod.upload.options=-g
GenF4.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
GenF4.menu.upload_method.bmpMethod=BMP (Black Magic Probe)
GenF4.menu.upload_method.bmpMethod.upload.protocol=gdb_bmp
GenF4.menu.upload_method.bmpMethod.upload.tool=bmp_upload
GenF4.menu.upload_method.hidMethod=HID Bootloader 2.2
GenF4.menu.upload_method.hidMethod.upload.protocol=hid22
GenF4.menu.upload_method.hidMethod.upload.tool=hid_upload
GenF4.menu.upload_method.hidMethod.build.flash_offset=0x4000
GenF4.menu.upload_method.hidMethod.build.bootloader_flags=-DBL_HID -DVECT_TAB_OFFSET={build.flash_offset}
###############################
# Sparky Flight Controllers
Sparky.name=Sparky flight controllers
Sparky.build.vid=0x0483
Sparky.build.core=arduino
Sparky.build.board=Sparky
Sparky.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
# Sparky_V1 board
Sparky.menu.pnum.Sparky_V1=Sparky V1
Sparky.menu.pnum.Sparky_V1.upload.maximum_size=262144
Sparky.menu.pnum.Sparky_V1.upload.maximum_data_size=40960
Sparky.menu.pnum.Sparky_V1.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
Sparky.menu.pnum.Sparky_V1.build.board=Sparky_V1
Sparky.menu.pnum.Sparky_V1.build.series=STM32F3xx
Sparky.menu.pnum.Sparky_V1.build.product_line=STM32F303xC
Sparky.menu.pnum.Sparky_V1.build.variant=SPARKY_F303CC
Sparky.menu.pnum.Sparky_V1.build.cmsis_lib_gcc=arm_cortexM4l_math
# Upload menu
Sparky.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
Sparky.menu.upload_method.swdMethod.upload.protocol=0
Sparky.menu.upload_method.swdMethod.upload.options=-g
Sparky.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
Sparky.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
Sparky.menu.upload_method.serialMethod.upload.protocol=1
Sparky.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
Sparky.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
Sparky.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
Sparky.menu.upload_method.dfuMethod.upload.protocol=2
Sparky.menu.upload_method.dfuMethod.upload.options=-g
Sparky.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
################################################################################
# RAK boards
RAK.name=RAKWireless
RAK.build.vid=0x0483
RAK.build.core=arduino
RAK.build.board=RAK
RAK.build.mcu=cortex-m3
RAK.build.series=STM32L1xx
RAK.build.cmsis_lib_gcc=arm_cortexM3l_math
RAK.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
# RAK811_TRACKER board
RAK.menu.pnum.RAK811_TRACKER=RAK811 LoRa Tracker (16kb RAM)
RAK.menu.pnum.RAK811_TRACKER.upload.maximum_data_size=16384
RAK.menu.pnum.RAK811_TRACKER.upload.maximum_size=131072
RAK.menu.pnum.RAK811_TRACKER.build.board=RAK811_TRACKER
RAK.menu.pnum.RAK811_TRACKER.build.product_line=STM32L151xB
RAK.menu.pnum.RAK811_TRACKER.build.variant=RAK811_TRACKER
RAK.menu.pnum.RAK811_TRACKERA=RAK811 LoRa Tracker (32kb RAM)
RAK.menu.pnum.RAK811_TRACKERA.upload.maximum_data_size=32768
RAK.menu.pnum.RAK811_TRACKERA.upload.maximum_size=131072
RAK.menu.pnum.RAK811_TRACKERA.build.board=RAK811_TRACKERA
RAK.menu.pnum.RAK811_TRACKERA.build.product_line=STM32L151xBA
RAK.menu.pnum.RAK811_TRACKERA.build.variant=RAK811_TRACKER
# Upload menu
RAK.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
RAK.menu.upload_method.swdMethod.upload.protocol=0
RAK.menu.upload_method.swdMethod.upload.options=-g
RAK.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
RAK.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
RAK.menu.upload_method.serialMethod.upload.protocol=1
RAK.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
RAK.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
RAK.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
RAK.menu.upload_method.dfuMethod.upload.protocol=2
RAK.menu.upload_method.dfuMethod.upload.options=-g
RAK.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
###############################
# 3D printer boards
3dprinter.name=3D printer boards
3dprinter.build.vid=0x0483
3dprinter.build.core=arduino
3dprinter.build.board=3dprinter
3dprinter.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
# ARMED_V1 board
3dprinter.menu.pnum.ARMED_V1=Armed V1
3dprinter.menu.pnum.ARMED_V1.upload.maximum_size=1048576
3dprinter.menu.pnum.ARMED_V1.upload.maximum_data_size=196608
3dprinter.menu.pnum.ARMED_V1.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
3dprinter.menu.pnum.ARMED_V1.build.board=ARMED_V1
3dprinter.menu.pnum.ARMED_V1.build.series=STM32F4xx
3dprinter.menu.pnum.ARMED_V1.build.product_line=STM32F407xx
3dprinter.menu.pnum.ARMED_V1.build.variant=ARMED_V1
3dprinter.menu.pnum.ARMED_V1.build.cmsis_lib_gcc=arm_cortexM4l_math
3dprinter.menu.pnum.ARMED_V1.build.vid=0x0483
3dprinter.menu.pnum.ARMED_V1.build.pid=0x5740
# REMRAM_V1 board
3dprinter.menu.pnum.REMRAM_V1=RemRam v1
3dprinter.menu.pnum.REMRAM_V1.upload.maximum_size=2097152
3dprinter.menu.pnum.REMRAM_V1.upload.maximum_data_size=524288
3dprinter.menu.pnum.REMRAM_V1.build.mcu=cortex-m7 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
3dprinter.menu.pnum.REMRAM_V1.build.board=REMRAM_V1
3dprinter.menu.pnum.REMRAM_V1.build.series=STM32F7xx
3dprinter.menu.pnum.REMRAM_V1.build.product_line=STM32F765xx
3dprinter.menu.pnum.REMRAM_V1.build.variant=REMRAM_V1
3dprinter.menu.pnum.REMRAM_V1.build.cmsis_lib_gcc=arm_cortexM7l_math
# RUMBA32 board
3dprinter.menu.pnum.RUMBA32=RUMBA32
3dprinter.menu.pnum.RUMBA32.upload.maximum_size=524288
3dprinter.menu.pnum.RUMBA32.upload.maximum_data_size=131072
3dprinter.menu.pnum.RUMBA32.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
3dprinter.menu.pnum.RUMBA32.build.board=RUMBA32_F446VE
3dprinter.menu.pnum.RUMBA32.build.series=STM32F4xx
3dprinter.menu.pnum.RUMBA32.build.product_line=STM32F446xx
3dprinter.menu.pnum.RUMBA32.build.variant=RUMBA32_F446VE
3dprinter.menu.pnum.RUMBA32.build.cmsis_lib_gcc=arm_cortexM4l_math
# STEVAL-3DP001V1 board
3dprinter.menu.pnum.ST3DP001_EVAL=STEVAL-3DP001V1
3dprinter.menu.pnum.ST3DP001_EVAL.upload.maximum_size=524288
3dprinter.menu.pnum.ST3DP001_EVAL.upload.maximum_data_size=98304
3dprinter.menu.pnum.ST3DP001_EVAL.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
3dprinter.menu.pnum.ST3DP001_EVAL.build.board=ST3DP001_EVAL
3dprinter.menu.pnum.ST3DP001_EVAL.build.series=STM32F4xx
3dprinter.menu.pnum.ST3DP001_EVAL.build.product_line=STM32F401xE
3dprinter.menu.pnum.ST3DP001_EVAL.build.variant=ST3DP001_EVAL
3dprinter.menu.pnum.ST3DP001_EVAL.build.cmsis_lib_gcc=arm_cortexM4l_math
# PRNTR_F407_V1 board
3dprinter.menu.pnum.PRNTR_F407_V1=PRNTR F407 v1
3dprinter.menu.pnum.PRNTR_F407_V1.upload.maximum_size=524288
3dprinter.menu.pnum.PRNTR_F407_V1.upload.maximum_data_size=196608
3dprinter.menu.pnum.PRNTR_F407_V1.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
3dprinter.menu.pnum.PRNTR_F407_V1.build.board=PRNTR_F407_V1
3dprinter.menu.pnum.PRNTR_F407_V1.build.series=STM32F4xx
3dprinter.menu.pnum.PRNTR_F407_V1.build.product_line=STM32F407xx
3dprinter.menu.pnum.PRNTR_F407_V1.build.variant=PRNTR_F407_V1
3dprinter.menu.pnum.PRNTR_F407_V1.build.cmsis_lib_gcc=arm_cortexM4l_math
# EEXTR_F030_V1 board
3dprinter.menu.pnum.EEXTR_F030_V1=EExtruder F030 V1
3dprinter.menu.pnum.EEXTR_F030_V1.upload.maximum_size=65536
3dprinter.menu.pnum.EEXTR_F030_V1.upload.maximum_data_size=8192
3dprinter.menu.pnum.EEXTR_F030_V1.build.mcu=cortex-m0
3dprinter.menu.pnum.EEXTR_F030_V1.build.board=EEXTR_F030_V1
3dprinter.menu.pnum.EEXTR_F030_V1.build.series=STM32F0xx
3dprinter.menu.pnum.EEXTR_F030_V1.build.product_line=STM32F030x8
3dprinter.menu.pnum.EEXTR_F030_V1.build.variant=EEXTR_F030_V1
3dprinter.menu.pnum.EEXTR_F030_V1.build.cmsis_lib_gcc=arm_cortexM0l_math
# MALYANM200_F103CB board
3dprinter.menu.pnum.MALYANM200_F103CB=Malyan M200 V1
3dprinter.menu.pnum.MALYANM200_F103CB.upload.maximum_size=122880
3dprinter.menu.pnum.MALYANM200_F103CB.upload.maximum_data_size=20480
3dprinter.menu.pnum.MALYANM200_F103CB.build.mcu=cortex-m3
3dprinter.menu.pnum.MALYANM200_F103CB.build.board=MALYANM200_F103CB
3dprinter.menu.pnum.MALYANM200_F103CB.build.series=STM32F1xx
3dprinter.menu.pnum.MALYANM200_F103CB.build.product_line=STM32F103xB
3dprinter.menu.pnum.MALYANM200_F103CB.build.variant=MALYANM200_F103CB
3dprinter.menu.pnum.MALYANM200_F103CB.build.cmsis_lib_gcc=arm_cortexM3l_math
3dprinter.menu.pnum.MALYANM200_F103CB.build.startup_file=-DCUSTOM_STARTUP_FILE
3dprinter.menu.pnum.MALYANM200_F103CB.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -DVECT_TAB_OFFSET=0x2000
# MALYANM200_F070CB board
3dprinter.menu.pnum.MALYANM200_F070CB=Malyan M200 V2
3dprinter.menu.pnum.MALYANM200_F070CB.upload.maximum_size=122880
3dprinter.menu.pnum.MALYANM200_F070CB.upload.maximum_data_size=15168
3dprinter.menu.pnum.MALYANM200_F070CB.build.mcu=cortex-m0
3dprinter.menu.pnum.MALYANM200_F070CB.build.board=MALYANM200_F070CB
3dprinter.menu.pnum.MALYANM200_F070CB.build.series=STM32F0xx
3dprinter.menu.pnum.MALYANM200_F070CB.build.product_line=STM32F070xB
3dprinter.menu.pnum.MALYANM200_F070CB.build.variant=MALYANM200_F070CB
3dprinter.menu.pnum.MALYANM200_F070CB.build.cmsis_lib_gcc=arm_cortexM0l_math
3dprinter.menu.pnum.MALYANM200_F070CB.build.startup_file=-DCUSTOM_STARTUP_FILE
3dprinter.menu.pnum.MALYANM200_F070CB.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial} -DVECT_TAB_OFFSET=0x2000
# VAkE v1.0
3dprinter.menu.pnum.VAKE_F446VE=VAkE v1.0
3dprinter.menu.pnum.VAKE_F446VE.upload.maximum_size=524288
3dprinter.menu.pnum.VAKE_F446VE.upload.maximum_data_size=131072
3dprinter.menu.pnum.VAKE_F446VE.build.mcu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard
3dprinter.menu.pnum.VAKE_F446VE.build.board=VAKE403
3dprinter.menu.pnum.VAKE_F446VE.build.series=STM32F4xx
3dprinter.menu.pnum.VAKE_F446VE.build.product_line=STM32F446xx
3dprinter.menu.pnum.VAKE_F446VE.build.variant=VAKE_F446VE
3dprinter.menu.pnum.VAKE_F446VE.build.cmsis_lib_gcc=arm_cortexM4l_math
# Upload menu
3dprinter.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
3dprinter.menu.upload_method.swdMethod.upload.protocol=0
3dprinter.menu.upload_method.swdMethod.upload.options=-g
3dprinter.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
3dprinter.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
3dprinter.menu.upload_method.serialMethod.upload.protocol=1
3dprinter.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
3dprinter.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
3dprinter.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
3dprinter.menu.upload_method.dfuMethod.upload.protocol=2
3dprinter.menu.upload_method.dfuMethod.upload.options=-g
3dprinter.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
################################################################################
# Serialx activation
Nucleo_144.menu.xserial.generic=Enabled (generic 'Serial')
Nucleo_144.menu.xserial.none=Enabled (no generic 'Serial')
Nucleo_144.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
Nucleo_144.menu.xserial.disabled=Disabled (No Serial support)
Nucleo_144.menu.xserial.disabled.build.xSerial=
Nucleo_64.menu.xserial.generic=Enabled (generic 'Serial')
Nucleo_64.menu.xserial.none=Enabled (no generic 'Serial')
Nucleo_64.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
Nucleo_64.menu.xserial.disabled=Disabled (No Serial support)
Nucleo_64.menu.xserial.disabled.build.xSerial=
Nucleo_32.menu.xserial.generic=Enabled (generic 'Serial')
Nucleo_32.menu.xserial.none=Enabled (no generic 'Serial')
Nucleo_32.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
Nucleo_32.menu.xserial.disabled=Disabled (No Serial support)
Nucleo_32.menu.xserial.disabled.build.xSerial=
Disco.menu.xserial.generic=Enabled (generic 'Serial')
Disco.menu.xserial.none=Enabled (no generic 'Serial')
Disco.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
Disco.menu.xserial.disabled=Disabled (no Serial support)
Disco.menu.xserial.disabled.build.xSerial=
GenF0.menu.xserial.generic=Enabled (generic 'Serial')
GenF0.menu.xserial.none=Enabled (no generic 'Serial')
GenF0.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
GenF0.menu.xserial.disabled=Disabled (no Serial support)
GenF0.menu.xserial.disabled.build.xSerial=
GenF1.menu.xserial.generic=Enabled (generic 'Serial')
GenF1.menu.xserial.none=Enabled (no generic 'Serial')
GenF1.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
GenF1.menu.xserial.disabled=Disabled (no Serial support)
GenF1.menu.xserial.disabled.build.xSerial=
GenF3.menu.xserial.generic=Enabled (generic 'Serial')
GenF3.menu.xserial.none=Enabled (no generic 'Serial')
GenF3.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
GenF3.menu.xserial.disabled=Disabled (no Serial support)
GenF3.menu.xserial.disabled.build.xSerial=
GenF4.menu.xserial.generic=Enabled (generic 'Serial')
GenF4.menu.xserial.none=Enabled (no generic 'Serial')
GenF4.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
GenF4.menu.xserial.disabled=Disabled (no Serial support)
GenF4.menu.xserial.disabled.build.xSerial=
Sparky.menu.xserial.generic=Enabled (generic 'Serial')
Sparky.menu.xserial.none=Enabled (no generic 'Serial')
Sparky.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
Sparky.menu.xserial.disabled=Disabled (no Serial support)
Sparky.menu.xserial.disabled.build.xSerial=
RAK.menu.xserial.generic=Enabled (generic 'Serial')
RAK.menu.xserial.none=Enabled (no generic 'Serial')
RAK.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
RAK.menu.xserial.disabled=Disabled (no Serial support)
RAK.menu.xserial.disabled.build.xSerial=
3dprinter.menu.xserial.generic=Enabled (generic 'Serial')
3dprinter.menu.xserial.none=Enabled (no generic 'Serial')
3dprinter.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
3dprinter.menu.xserial.disabled=Disabled (no Serial support)
3dprinter.menu.xserial.disabled.build.xSerial=
# USB connectivity
Nucleo_144.menu.usb.none=None
Nucleo_144.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
Nucleo_144.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
Nucleo_144.menu.usb.CDC=CDC (no generic 'Serial')
Nucleo_144.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
Nucleo_144.menu.usb.HID=HID (keyboard and mouse)
Nucleo_144.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
Nucleo_144.menu.xusb.FS=Low/Full Speed
Nucleo_144.menu.xusb.HS=High Speed
Nucleo_144.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
Nucleo_144.menu.xusb.HSFS=High Speed in Full Speed mode
Nucleo_144.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
Nucleo_64.menu.usb.none=None
Nucleo_64.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
Nucleo_64.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
Nucleo_64.menu.usb.CDC=CDC (no generic 'Serial')
Nucleo_64.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
Nucleo_64.menu.usb.HID=HID (keyboard and mouse)
Nucleo_64.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
Nucleo_64.menu.xusb.FS=Low/Full Speed
Nucleo_64.menu.xusb.HS=High Speed
Nucleo_64.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
Nucleo_64.menu.xusb.HSFS=High Speed in Full Speed mode
Nucleo_64.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
Nucleo_32.menu.usb.none=None
Nucleo_32.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
Nucleo_32.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
Nucleo_32.menu.usb.CDC=CDC (no generic 'Serial')
Nucleo_32.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
Nucleo_32.menu.usb.HID=HID (keyboard and mouse)
Nucleo_32.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
Nucleo_32.menu.xusb.FS=Low/Full Speed
Nucleo_32.menu.xusb.HS=High Speed
Nucleo_32.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
Nucleo_32.menu.xusb.HSFS=High Speed in Full Speed mode
Nucleo_32.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
Disco.menu.usb.none=None
Disco.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
Disco.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
Disco.menu.usb.CDC=CDC (no generic 'Serial')
Disco.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
Disco.menu.usb.HID=HID (keyboard and mouse)
Disco.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
Disco.menu.xusb.FS=Low/Full Speed
Disco.menu.xusb.HS=High Speed
Disco.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
Disco.menu.xusb.HSFS=High Speed in Full Speed mode
Disco.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
GenF1.menu.usb.none=None
GenF1.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
GenF1.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
GenF1.menu.usb.CDC=CDC (no generic 'Serial')
GenF1.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
GenF1.menu.usb.HID=HID (keyboard and mouse)
GenF1.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
GenF1.menu.xusb.FS=Low/Full Speed
GenF1.menu.xusb.HS=High Speed
GenF1.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
GenF1.menu.xusb.HSFS=High Speed in Full Speed mode
GenF1.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
GenF3.menu.usb.none=None
GenF3.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
GenF3.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
GenF3.menu.usb.CDC=CDC (no generic 'Serial')
GenF3.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
GenF3.menu.usb.HID=HID (keyboard and mouse)
GenF3.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
GenF3.menu.xusb.FS=Low/Full Speed
GenF3.menu.xusb.HS=High Speed
GenF3.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
GenF3.menu.xusb.HSFS=High Speed in Full Speed mode
GenF3.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
GenF4.menu.usb.none=None
GenF4.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
GenF4.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
GenF4.menu.usb.CDC=CDC (no generic 'Serial')
GenF4.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
GenF4.menu.usb.HID=HID (keyboard and mouse)
GenF4.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
GenF4.menu.xusb.FS=Low/Full Speed
GenF4.menu.xusb.HS=High Speed
GenF4.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
GenF4.menu.xusb.HSFS=High Speed in Full Speed mode
GenF4.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
Sparky.menu.usb.none=None
Sparky.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
Sparky.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
Sparky.menu.usb.CDC=CDC (no generic 'Serial')
Sparky.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
Sparky.menu.xusb.FS=Low/Full Speed
Sparky.menu.xusb.HS=High Speed
Sparky.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
Sparky.menu.xusb.HSFS=High Speed in Full Speed mode
Sparky.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
3dprinter.menu.usb.none=None
3dprinter.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
3dprinter.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
3dprinter.menu.usb.CDC=CDC (no generic 'Serial')
3dprinter.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
3dprinter.menu.xusb.FS=Low/Full Speed
3dprinter.menu.xusb.HS=High Speed
3dprinter.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
3dprinter.menu.xusb.HSFS=High Speed in Full Speed mode
3dprinter.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
# Optimizations
Nucleo_144.menu.opt.osstd=Smallest (-Os default)
Nucleo_144.menu.opt.oslto=Smallest (-Os) with LTO
Nucleo_144.menu.opt.oslto.build.flags.optimize=-Os -flto
Nucleo_144.menu.opt.o1std=Fast (-O1)
Nucleo_144.menu.opt.o1std.build.flags.optimize=-O1
Nucleo_144.menu.opt.o1lto=Fast (-O1) with LTO
Nucleo_144.menu.opt.o1lto.build.flags.optimize=-O1 -flto
Nucleo_144.menu.opt.o2std=Faster (-O2)
Nucleo_144.menu.opt.o2std.build.flags.optimize=-O2
Nucleo_144.menu.opt.o2lto=Faster (-O2) with LTO
Nucleo_144.menu.opt.o2lto.build.flags.optimize=-O2 -flto
Nucleo_144.menu.opt.o3std=Fastest (-O3)
Nucleo_144.menu.opt.o3std.build.flags.optimize=-O3
Nucleo_144.menu.opt.o3lto=Fastest (-O3) with LTO
Nucleo_144.menu.opt.o3lto.build.flags.optimize=-O3 -flto
Nucleo_144.menu.opt.ogstd=Debug (-g)
Nucleo_144.menu.opt.ogstd.build.flags.optimize=-g -Og
Nucleo_64.menu.opt.osstd=Smallest (-Os default)
Nucleo_64.menu.opt.oslto=Smallest (-Os) with LTO
Nucleo_64.menu.opt.oslto.build.flags.optimize=-Os -flto
Nucleo_64.menu.opt.o1std=Fast (-O1)
Nucleo_64.menu.opt.o1std.build.flags.optimize=-O1
Nucleo_64.menu.opt.o1lto=Fast (-O1) with LTO
Nucleo_64.menu.opt.o1lto.build.flags.optimize=-O1 -flto
Nucleo_64.menu.opt.o2std=Faster (-O2)
Nucleo_64.menu.opt.o2std.build.flags.optimize=-O2
Nucleo_64.menu.opt.o2lto=Faster (-O2) with LTO
Nucleo_64.menu.opt.o2lto.build.flags.optimize=-O2 -flto
Nucleo_64.menu.opt.o3std=Fastest (-O3)
Nucleo_64.menu.opt.o3std.build.flags.optimize=-O3
Nucleo_64.menu.opt.o3lto=Fastest (-O3) with LTO
Nucleo_64.menu.opt.o3lto.build.flags.optimize=-O3 -flto
Nucleo_64.menu.opt.ogstd=Debug (-g)
Nucleo_64.menu.opt.ogstd.build.flags.optimize=-g -Og
Nucleo_32.menu.opt.osstd=Smallest (-Os default)
Nucleo_32.menu.opt.oslto=Smallest (-Os) with LTO
Nucleo_32.menu.opt.oslto.build.flags.optimize=-Os -flto
Nucleo_32.menu.opt.o1std=Fast (-O1)
Nucleo_32.menu.opt.o1std.build.flags.optimize=-O1
Nucleo_32.menu.opt.o1lto=Fast (-O1) with LTO
Nucleo_32.menu.opt.o1lto.build.flags.optimize=-O1 -flto
Nucleo_32.menu.opt.o2std=Faster (-O2)
Nucleo_32.menu.opt.o2std.build.flags.optimize=-O2
Nucleo_32.menu.opt.o2lto=Faster (-O2) with LTO
Nucleo_32.menu.opt.o2lto.build.flags.optimize=-O2 -flto
Nucleo_32.menu.opt.o3std=Fastest (-O3)
Nucleo_32.menu.opt.o3std.build.flags.optimize=-O3
Nucleo_32.menu.opt.o3lto=Fastest (-O3) with LTO
Nucleo_32.menu.opt.o3lto.build.flags.optimize=-O3 -flto
Nucleo_32.menu.opt.ogstd=Debug (-g)
Nucleo_32.menu.opt.ogstd.build.flags.optimize=-g -Og
Disco.menu.opt.osstd=Smallest (-Os default)
Disco.menu.opt.oslto=Smallest (-Os) with LTO
Disco.menu.opt.oslto.build.flags.optimize=-Os -flto
Disco.menu.opt.o1std=Fast (-O1)
Disco.menu.opt.o1std.build.flags.optimize=-O1
Disco.menu.opt.o1lto=Fast (-O1) with LTO
Disco.menu.opt.o1lto.build.flags.optimize=-O1 -flto
Disco.menu.opt.o2std=Faster (-O2)
Disco.menu.opt.o2std.build.flags.optimize=-O2
Disco.menu.opt.o2lto=Faster (-O2) with LTO
Disco.menu.opt.o2lto.build.flags.optimize=-O2 -flto
Disco.menu.opt.o3std=Fastest (-O3)
Disco.menu.opt.o3std.build.flags.optimize=-O3
Disco.menu.opt.o3lto=Fastest (-O3) with LTO
Disco.menu.opt.o3lto.build.flags.optimize=-O3 -flto
Disco.menu.opt.ogstd=Debug (-g)
Disco.menu.opt.ogstd.build.flags.optimize=-g -Og
GenF0.menu.opt.osstd=Smallest (-Os default)
GenF0.menu.opt.oslto=Smallest (-Os) with LTO
GenF0.menu.opt.oslto.build.flags.optimize=-Os -flto
GenF0.menu.opt.o1std=Fast (-O1)
GenF0.menu.opt.o1std.build.flags.optimize=-O1
GenF0.menu.opt.o1lto=Fast (-O1) with LTO
GenF0.menu.opt.o1lto.build.flags.optimize=-O1 -flto
GenF0.menu.opt.o2std=Faster (-O2)
GenF0.menu.opt.o2std.build.flags.optimize=-O2
GenF0.menu.opt.o2lto=Faster (-O2) with LTO
GenF0.menu.opt.o2lto.build.flags.optimize=-O2 -flto
GenF0.menu.opt.o3std=Fastest (-O3)
GenF0.menu.opt.o3std.build.flags.optimize=-O3
GenF0.menu.opt.o3lto=Fastest (-O3) with LTO
GenF0.menu.opt.o3lto.build.flags.optimize=-O3 -flto
GenF0.menu.opt.ogstd=Debug (-g)
GenF0.menu.opt.ogstd.build.flags.optimize=-g -Og
GenF1.menu.opt.osstd=Smallest (-Os default)
GenF1.menu.opt.oslto=Smallest (-Os) with LTO
GenF1.menu.opt.oslto.build.flags.optimize=-Os -flto
GenF1.menu.opt.o1std=Fast (-O1)
GenF1.menu.opt.o1std.build.flags.optimize=-O1
GenF1.menu.opt.o1lto=Fast (-O1) with LTO
GenF1.menu.opt.o1lto.build.flags.optimize=-O1 -flto
GenF1.menu.opt.o2std=Faster (-O2)
GenF1.menu.opt.o2std.build.flags.optimize=-O2
GenF1.menu.opt.o2lto=Faster (-O2) with LTO
GenF1.menu.opt.o2lto.build.flags.optimize=-O2 -flto
GenF1.menu.opt.o3std=Fastest (-O3)
GenF1.menu.opt.o3std.build.flags.optimize=-O3
GenF1.menu.opt.o3lto=Fastest (-O3) with LTO
GenF1.menu.opt.o3lto.build.flags.optimize=-O3 -flto
GenF1.menu.opt.ogstd=Debug (-g)
GenF1.menu.opt.ogstd.build.flags.optimize=-g -Og
GenF3.menu.opt.osstd=Smallest (-Os default)
GenF3.menu.opt.osstd.build.flags.optimize=-Os
GenF3.menu.opt.oslto=Smallest (-Os) with LTO
GenF3.menu.opt.oslto.build.flags.optimize=-Os -flto
GenF3.menu.opt.o1std=Fast (-O1)
GenF3.menu.opt.o1std.build.flags.optimize=-O1
GenF3.menu.opt.o1lto=Fast (-O1) with LTO
GenF3.menu.opt.o1lto.build.flags.optimize=-O1 -flto
GenF3.menu.opt.o2std=Faster (-O2)
GenF3.menu.opt.o2std.build.flags.optimize=-O2
GenF3.menu.opt.o2lto=Faster (-O2) with LTO
GenF3.menu.opt.o2lto.build.flags.optimize=-O2 -flto
GenF3.menu.opt.o3std=Fastest (-O3)
GenF3.menu.opt.o3std.build.flags.optimize=-O3
GenF3.menu.opt.o3lto=Fastest (-O3) with LTO
GenF3.menu.opt.o3lto.build.flags.optimize=-O3 -flto
GenF3.menu.opt.ogstd=Debug (-g)
GenF3.menu.opt.ogstd.build.flags.optimize=-g -Og
GenF4.menu.opt.osstd=Smallest (-Os default)
GenF4.menu.opt.osstd.build.flags.optimize=-Os
GenF4.menu.opt.oslto=Smallest (-Os) with LTO
GenF4.menu.opt.oslto.build.flags.optimize=-Os -flto
GenF4.menu.opt.o1std=Fast (-O1)
GenF4.menu.opt.o1std.build.flags.optimize=-O1
GenF4.menu.opt.o1lto=Fast (-O1) with LTO
GenF4.menu.opt.o1lto.build.flags.optimize=-O1 -flto
GenF4.menu.opt.o2std=Faster (-O2)
GenF4.menu.opt.o2std.build.flags.optimize=-O2
GenF4.menu.opt.o2lto=Faster (-O2) with LTO
GenF4.menu.opt.o2lto.build.flags.optimize=-O2 -flto
GenF4.menu.opt.o3std=Fastest (-O3)
GenF4.menu.opt.o3std.build.flags.optimize=-O3
GenF4.menu.opt.o3lto=Fastest (-O3) with LTO
GenF4.menu.opt.o3lto.build.flags.optimize=-O3 -flto
GenF4.menu.opt.ogstd=Debug (-g)
GenF4.menu.opt.ogstd.build.flags.optimize=-g -Og
Sparky.menu.opt.osstd=Smallest (-Os default)
Sparky.menu.opt.oslto=Smallest (-Os) with LTO
Sparky.menu.opt.oslto.build.flags.optimize=-Os -flto
Sparky.menu.opt.o1std=Fast (-O1)
Sparky.menu.opt.o1std.build.flags.optimize=-O1
Sparky.menu.opt.o1lto=Fast (-O1) with LTO
Sparky.menu.opt.o1lto.build.flags.optimize=-O1 -flto
Sparky.menu.opt.o2std=Faster (-O2)
Sparky.menu.opt.o2std.build.flags.optimize=-O2
Sparky.menu.opt.o2lto=Faster (-O2) with LTO
Sparky.menu.opt.o2lto.build.flags.optimize=-O2 -flto
Sparky.menu.opt.o3std=Fastest (-O3)
Sparky.menu.opt.o3std.build.flags.optimize=-O3
Sparky.menu.opt.o3lto=Fastest (-O3) with LTO
Sparky.menu.opt.o3lto.build.flags.optimize=-O3 -flto
Sparky.menu.opt.ogstd=Debug (-g)
Sparky.menu.opt.ogstd.build.flags.optimize=-g -Og
RAK.menu.opt.osstd=Smallest (-Os default)
RAK.menu.opt.oslto=Smallest (-Os) with LTO
RAK.menu.opt.oslto.build.flags.optimize=-Os -flto
RAK.menu.opt.o1std=Fast (-O1)
RAK.menu.opt.o1std.build.flags.optimize=-O1
RAK.menu.opt.o1lto=Fast (-O1) with LTO
RAK.menu.opt.o1lto.build.flags.optimize=-O1 -flto
RAK.menu.opt.o2std=Faster (-O2)
RAK.menu.opt.o2std.build.flags.optimize=-O2
RAK.menu.opt.o2lto=Faster (-O2) with LTO
RAK.menu.opt.o2lto.build.flags.optimize=-O2 -flto
RAK.menu.opt.o3std=Fastest (-O3)
RAK.menu.opt.o3std.build.flags.optimize=-O3
RAK.menu.opt.o3lto=Fastest (-O3) with LTO
RAK.menu.opt.o3lto.build.flags.optimize=-O3 -flto
RAK.menu.opt.ogstd=Debug (-g)
RAK.menu.opt.ogstd.build.flags.optimize=-g -Og
3dprinter.menu.opt.osstd=Smallest (-Os default)
3dprinter.menu.opt.oslto=Smallest (-Os) with LTO
3dprinter.menu.opt.oslto.build.flags.optimize=-Os -flto
3dprinter.menu.opt.o1std=Fast (-O1)
3dprinter.menu.opt.o1std.build.flags.optimize=-O1
3dprinter.menu.opt.o1lto=Fast (-O1) with LTO
3dprinter.menu.opt.o1lto.build.flags.optimize=-O1 -flto
3dprinter.menu.opt.o2std=Faster (-O2)
3dprinter.menu.opt.o2std.build.flags.optimize=-O2
3dprinter.menu.opt.o2lto=Faster (-O2) with LTO
3dprinter.menu.opt.o2lto.build.flags.optimize=-O2 -flto
3dprinter.menu.opt.o3std=Fastest (-O3)
3dprinter.menu.opt.o3std.build.flags.optimize=-O3
3dprinter.menu.opt.o3lto=Fastest (-O3) with LTO
3dprinter.menu.opt.o3lto.build.flags.optimize=-O3 -flto
3dprinter.menu.opt.ogstd=Debug (-g)
3dprinter.menu.opt.ogstd.build.flags.optimize=-g -Og
# C Runtime Library
Nucleo_144.menu.rtlib.nano=Newlib Nano (default)
Nucleo_144.menu.rtlib.nanofp=Newlib Nano + Float Printf
Nucleo_144.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
Nucleo_144.menu.rtlib.nanofs=Newlib Nano + Float Scanf
Nucleo_144.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
Nucleo_144.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
Nucleo_144.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
Nucleo_144.menu.rtlib.full=Newlib Standard
Nucleo_144.menu.rtlib.full.build.flags.ldspecs=
Nucleo_64.menu.rtlib.nano=Newlib Nano (default)
Nucleo_64.menu.rtlib.nanofp=Newlib Nano + Float Printf
Nucleo_64.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
Nucleo_64.menu.rtlib.nanofs=Newlib Nano + Float Scanf
Nucleo_64.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
Nucleo_64.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
Nucleo_64.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
Nucleo_64.menu.rtlib.full=Newlib Standard
Nucleo_64.menu.rtlib.full.build.flags.ldspecs=
Nucleo_32.menu.rtlib.nano=Newlib Nano (default)
Nucleo_32.menu.rtlib.nanofp=Newlib Nano + Float Printf
Nucleo_32.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
Nucleo_32.menu.rtlib.nanofs=Newlib Nano + Float Scanf
Nucleo_32.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
Nucleo_32.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
Nucleo_32.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
Nucleo_32.menu.rtlib.full=Newlib Standard
Nucleo_32.menu.rtlib.full.build.flags.ldspecs=
Disco.menu.rtlib.nano=Newlib Nano (default)
Disco.menu.rtlib.nanofp=Newlib Nano + Float Printf
Disco.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
Disco.menu.rtlib.nanofs=Newlib Nano + Float Scanf
Disco.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
Disco.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
Disco.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
Disco.menu.rtlib.full=Newlib Standard
Disco.menu.rtlib.full.build.flags.ldspecs=
GenF0.menu.rtlib.nano=Newlib Nano (default)
GenF0.menu.rtlib.nanofp=Newlib Nano + Float Printf
GenF0.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
GenF0.menu.rtlib.nanofs=Newlib Nano + Float Scanf
GenF0.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
GenF0.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
GenF0.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
GenF0.menu.rtlib.full=Newlib Standard
GenF0.menu.rtlib.full.build.flags.ldspecs=
GenF1.menu.rtlib.nano=Newlib Nano (default)
GenF1.menu.rtlib.nanofp=Newlib Nano + Float Printf
GenF1.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
GenF1.menu.rtlib.nanofs=Newlib Nano + Float Scanf
GenF1.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
GenF1.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
GenF1.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
GenF1.menu.rtlib.full=Newlib Standard
GenF1.menu.rtlib.full.build.flags.ldspecs=
GenF3.menu.rtlib.nano=Newlib Nano (default)
GenF3.menu.rtlib.nanofp=Newlib Nano + Float Printf
GenF3.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
GenF3.menu.rtlib.nanofs=Newlib Nano + Float Scanf
GenF3.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
GenF3.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
GenF3.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
GenF3.menu.rtlib.full=Newlib Standard
GenF3.menu.rtlib.full.build.flags.ldspecs=
GenF4.menu.rtlib.nano=Newlib Nano (default)
GenF4.menu.rtlib.nanofp=Newlib Nano + Float Printf
GenF4.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
GenF4.menu.rtlib.nanofs=Newlib Nano + Float Scanf
GenF4.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
GenF4.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
GenF4.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
GenF4.menu.rtlib.full=Newlib Standard
GenF4.menu.rtlib.full.build.flags.ldspecs=
Sparky.menu.rtlib.nano=Newlib Nano (default)
Sparky.menu.rtlib.nanofp=Newlib Nano + Float Printf
Sparky.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
Sparky.menu.rtlib.nanofs=Newlib Nano + Float Scanf
Sparky.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
Sparky.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
Sparky.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
Sparky.menu.rtlib.full=Newlib Standard
Sparky.menu.rtlib.full.build.flags.ldspecs=
RAK.menu.rtlib.nano=Newlib Nano (default)
RAK.menu.rtlib.nanofp=Newlib Nano + Float Printf
RAK.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
RAK.menu.rtlib.nanofs=Newlib Nano + Float Scanf
RAK.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
RAK.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
RAK.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
RAK.menu.rtlib.full=Newlib Standard
RAK.menu.rtlib.full.build.flags.ldspecs=
3dprinter.menu.rtlib.nano=Newlib Nano (default)
3dprinter.menu.rtlib.nanofp=Newlib Nano + Float Printf
3dprinter.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
3dprinter.menu.rtlib.nanofs=Newlib Nano + Float Scanf
3dprinter.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
3dprinter.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
3dprinter.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
3dprinter.menu.rtlib.full=Newlib Standard
3dprinter.menu.rtlib.full.build.flags.ldspecs=
/*
******************************************************************************
**
** File : LinkerScript.ld
**
** Author : Auto-generated by STM32CubeIDE
**
** Abstract : Linker script for STM32F070CBTx Device from STM32F0 series
** 128Kbytes FLASH
** 16Kbytes RAM
**
** Set heap size, stack size and stack location according
** to application requirements.
**
** Set memory bank area and size if external memory is used.
**
** Target : STMicroelectronics STM32
**
** Distribution: The file is distributed as is without any warranty
** of any kind.
**
*****************************************************************************
** @attention
**
** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
**
** Redistribution and use in source and binary forms, with or without modification,
** are permitted provided that the following conditions are met:
** 1. Redistributions of source code must retain the above copyright notice,
** this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright notice,
** this list of conditions and the following disclaimer in the documentation
** and/or other materials provided with the distribution.
** 3. Neither the name of STMicroelectronics nor the names of its contributors
** may be used to endorse or promote products derived from this software
** without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
*****************************************************************************
*/
/* Entry Point */
ENTRY(Reset_Handler)
/* Highest address of the user mode stack */
_estack = 0x20004000; /* end of "RAM" Ram type memory */
_Min_Heap_Size = 0x200 ; /* required amount of heap */
_Min_Stack_Size = 0x400 ; /* required amount of stack */
/* Memories definition */
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 16K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K
}
/* Sections */
SECTIONS
{
/* The startup code into "FLASH" Rom type memory */
.isr_vector :
{
. = ALIGN(4);
KEEP(*(.isr_vector)) /* Startup code */
. = ALIGN(4);
} >FLASH
/* The program code and other data into "FLASH" Rom type memory */
.text :
{
. = ALIGN(4);
*(.text) /* .text sections (code) */
*(.text*) /* .text* sections (code) */
*(.glue_7) /* glue arm to thumb code */
*(.glue_7t) /* glue thumb to arm code */
*(.eh_frame)
KEEP (*(.init))
KEEP (*(.fini))
. = ALIGN(4);
_etext = .; /* define a global symbols at end of code */
} >FLASH
/* Constant data into "FLASH" Rom type memory */
.rodata :
{
. = ALIGN(4);
*(.rodata) /* .rodata sections (constants, strings, etc.) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
. = ALIGN(4);
} >FLASH
.ARM.extab : {
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
.ARM : {
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
. = ALIGN(4);
} >FLASH
.preinit_array :
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
. = ALIGN(4);
} >FLASH
.init_array :
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
. = ALIGN(4);
} >FLASH
.fini_array :
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
KEEP (*(.fini_array*))
PROVIDE_HIDDEN (__fini_array_end = .);
. = ALIGN(4);
} >FLASH
/* Used by the startup to initialize data */
_sidata = LOADADDR(.data);
/* Initialized data sections into "RAM" Ram type memory */
.data :
{
. = ALIGN(4);
_sdata = .; /* create a global symbol at data start */
*(.data) /* .data sections */
*(.data*) /* .data* sections */
. = ALIGN(4);
_edata = .; /* define a global symbol at data end */
} >RAM AT> FLASH
/* Uninitialized data section into "RAM" Ram type memory */
. = ALIGN(4);
.bss :
{
/* This is used by the startup in order to initialize the .bss secion */
_sbss = .; /* define a global symbol at bss start */
__bss_start__ = _sbss;
*(.bss)
*(.bss*)
*(COMMON)
. = ALIGN(4);
_ebss = .; /* define a global symbol at bss end */
__bss_end__ = _ebss;
} >RAM
/* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */
._user_heap_stack :
{
. = ALIGN(8);
PROVIDE ( end = . );
PROVIDE ( _end = . );
. = . + _Min_Heap_Size;
. = . + _Min_Stack_Size;
. = ALIGN(8);
} >RAM
/* Remove information from the compiler libraries */
/DISCARD/ :
{
libc.a ( * )
libm.a ( * )
libgcc.a ( * )
}
.ARM.attributes 0 : { *(.ARM.attributes) }
}
/*
*******************************************************************************
* Copyright (c) 2019, STMicroelectronics
* All rights reserved.
*
* This software component is licensed by ST under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
*******************************************************************************
* Automatically generated from STM32F070CBTx.xml
*/
#include "Arduino.h"
#include "PeripheralPins.h"
/* =====
* Note: Commented lines are alternative possibilities which are not used per default.
* If you change them, you will have to know what you do
* =====
*/
//*** ADC ***
#ifdef HAL_ADC_MODULE_ENABLED
WEAK const PinMap PinMap_ADC[] = {
{PA_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC_IN0
{PA_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC_IN1
{PA_2, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC_IN2
{PA_3, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC_IN3
{PA_4, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC_IN4
{PA_5, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC_IN5
{PA_6, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC_IN6
{PA_7, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC_IN7
{PB_0, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC_IN8
{PB_1, ADC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC_IN9
{NC, NP, 0}
};
#endif
//*** No DAC ***
//*** I2C ***
#ifdef HAL_I2C_MODULE_ENABLED
WEAK const PinMap PinMap_I2C_SDA[] = {
{PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C1)},
{PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C1)},
{PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C2)},
{PB_14, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF5_I2C2)},
{NC, NP, 0}
};
#endif
#ifdef HAL_I2C_MODULE_ENABLED
WEAK const PinMap PinMap_I2C_SCL[] = {
{PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C1)},
{PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C1)},
{PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C2)},
{PB_13, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF5_I2C2)},
{NC, NP, 0}
};
#endif
//*** PWM ***
#ifdef HAL_TIM_MODULE_ENABLED
WEAK const PinMap PinMap_PWM[] = {
{PA_1, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM15, 1, 1)}, // TIM15_CH1N
{PA_2, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM15, 1, 0)}, // TIM15_CH1
{PA_3, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM15, 2, 0)}, // TIM15_CH2
{PA_4, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM14, 1, 0)}, // TIM14_CH1
{PA_6, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1
{PA_6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM16, 1, 0)}, // TIM16_CH1
{PA_7, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)}, // TIM1_CH1N
{PA_7, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2
{PA_7, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM14, 1, 0)}, // TIM14_CH1
{PA_7, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM17, 1, 0)}, // TIM17_CH1
{PA_8, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 0)}, // TIM1_CH1
{PA_9, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 0)}, // TIM1_CH2
{PA_10, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 0)}, // TIM1_CH3
{PA_11, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 4, 0)}, // TIM1_CH4
{PB_0, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)}, // TIM1_CH2N
{PB_0, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 3, 0)}, // TIM3_CH3
{PB_1, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)}, // TIM1_CH3N
{PB_1, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 4, 0)}, // TIM3_CH4
{PB_1, TIM14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM14, 1, 0)}, // TIM14_CH1
{PB_4, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 1, 0)}, // TIM3_CH1
{PB_5, TIM3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM3, 2, 0)}, // TIM3_CH2
{PB_6, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM16, 1, 1)}, // TIM16_CH1N
{PB_7, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM17, 1, 1)}, // TIM17_CH1N
{PB_8, TIM16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM16, 1, 0)}, // TIM16_CH1
{PB_9, TIM17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM17, 1, 0)}, // TIM17_CH1
{PB_13, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 1, 1)}, // TIM1_CH1N
{PB_14, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 2, 1)}, // TIM1_CH2N
{PB_14, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM15, 1, 0)}, // TIM15_CH1
{PB_15, TIM1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM1, 3, 1)}, // TIM1_CH3N
{PB_15, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_TIM15, 1, 1)}, // TIM15_CH1N
{PB_15, TIM15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_TIM15, 2, 0)}, // TIM15_CH2
{NC, NP, 0}
};
#endif
//*** SERIAL ***
#ifdef HAL_UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_TX[] = {
{PA_0, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)},
{PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
{PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)},
{PA_14, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
{PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
{PB_10, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)},
{NC, NP, 0}
};
#endif
#ifdef HAL_UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_RX[] = {
{PA_1, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)},
{PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
{PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)},
{PA_15, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
{PB_7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
{PB_11, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)},
{NC, NP, 0}
};
#endif
#ifdef HAL_UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_RTS[] = {
{PA_1, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
{PA_12, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)},
{PA_15, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)},
{PB_1, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)},
{PB_14, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)},
{NC, NP, 0}
};
#endif
#ifdef HAL_UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_CTS[] = {
{PA_0, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART2)},
{PA_6, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)},
{PA_11, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_USART1)},
{PB_7, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART4)},
{PB_13, USART3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART3)},
{NC, NP, 0}
};
#endif
//*** SPI ***
#ifdef HAL_SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_MOSI[] = {
{PA_7, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PB_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PB_15, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
{NC, NP, 0}
};
#endif
#ifdef HAL_SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_MISO[] = {
{PA_6, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PB_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PB_14, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
{NC, NP, 0}
};
#endif
#ifdef HAL_SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_SCLK[] = {
{PA_5, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PB_3, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PB_10, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
{PB_13, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
{NC, NP, 0}
};
#endif
#ifdef HAL_SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_SSEL[] = {
{PA_4, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PA_15, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
{PB_9, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_SPI2)},
{PB_12, SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},
{NC, NP, 0}
};
#endif
//*** No CAN ***
//*** No ETHERNET ***
//*** No QUADSPI ***
//*** USB ***
#ifdef HAL_PCD_MODULE_ENABLED
WEAK const PinMap PinMap_USB[] = {
{PA_11, USB, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_DM
{PA_12, USB, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_DP
{PA_13, USB, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_USB)}, // USB_NOE
{NC, NP, 0}
};
#endif
//*** No USB_OTG_FS ***
//*** No USB_OTG_HS ***
/* SYS_WKUP */
#ifdef PWR_WAKEUP_PIN1
SYS_WKUP1 = PA_0,
#endif
#ifdef PWR_WAKEUP_PIN2
SYS_WKUP2 = PC_13,
#endif
#ifdef PWR_WAKEUP_PIN3
SYS_WKUP3 = NC,
#endif
#ifdef PWR_WAKEUP_PIN4
SYS_WKUP4 = PA_2,
#endif
#ifdef PWR_WAKEUP_PIN5
SYS_WKUP5 = NC,
#endif
#ifdef PWR_WAKEUP_PIN6
SYS_WKUP6 = PB_5,
#endif
#ifdef PWR_WAKEUP_PIN7
SYS_WKUP7 = PB_15,
#endif
#ifdef PWR_WAKEUP_PIN8
SYS_WKUP8 = NC,
#endif
/* USB */
#ifdef USBCON
USB_DM = PA_11,
USB_DP = PA_12,
USB_NOE = PA_13,
#endif
/**
******************************************************************************
* @file startup_stm32f070xb.s
* @author MCD Application Team
* @brief STM32F070xb/STM32F070x8 devices vector table for GCC toolchain.
* This module performs:
* - Set the initial SP
* - Set the initial PC == Reset_Handler,
* - Set the vector table entries with the exceptions ISR address
* - Branches to main in the C library (which eventually
* calls main()).
* After Reset the Cortex-M0 processor is in Thread mode,
* priority is Privileged, and the Stack is set to Main.
******************************************************************************
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************
*/
.syntax unified
.cpu cortex-m0
.fpu softvfp
.thumb
.global g_pfnVectors
.global Default_Handler
/* start address for the initialization values of the .data section.
defined in linker script */
.word _sidata
/* start address for the .data section. defined in linker script */
.word _sdata
/* end address for the .data section. defined in linker script */
.word _edata
/* start address for the .bss section. defined in linker script */
.word _sbss
/* end address for the .bss section. defined in linker script */
.word _ebss
.section .text.Reset_Handler
.weak Reset_Handler
.type Reset_Handler, %function
Reset_Handler:
/* bl manualFan */
ldr r0, =_estack
mov sp, r0 /* set stack pointer */
cpsid i
cpsid f
/* Copy the data segment initializers from flash to SRAM */
ldr r0, =_sdata
ldr r1, =_edata
ldr r2, =_sidata
movs r3, #0
b LoopCopyDataInit
CopyDataInit:
ldr r4, [r2, r3]
str r4, [r0, r3]
adds r3, r3, #4
LoopCopyDataInit:
adds r4, r0, r3
cmp r4, r1
bcc CopyDataInit
/* Zero fill the bss segment. */
ldr r2, =_sbss
ldr r4, =_ebss
movs r3, #0
b LoopFillZerobss
FillZerobss:
str r3, [r2]
adds r2, r2, #4
LoopFillZerobss:
cmp r2, r4
bcc FillZerobss
/* Call the clock system intitialization function.*/
bl SystemInit
cpsie i
cpsie f
/* Call static constructors */
bl __libc_init_array
/* Call the application's entry point.*/
bl main
LoopForever:
b LoopForever
.size Reset_Handler, .-Reset_Handler
/**
* @brief This is the code that gets called when the processor receives an
* unexpected interrupt. This simply enters an infinite loop, preserving
* the system state for examination by a debugger.
*
* @param None
* @retval : None
*/
.section .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
b Infinite_Loop
.size Default_Handler, .-Default_Handler
/******************************************************************************
*
* The minimal vector table for a Cortex M0. Note that the proper constructs
* must be placed on this to ensure that it ends up at physical address
* 0x0000.0000.
*
******************************************************************************/
.section .isr_vector,"a",%progbits
.type g_pfnVectors, %object
.size g_pfnVectors, .-g_pfnVectors
g_pfnVectors:
.word _estack
.word Reset_Handler
.word NMI_Handler
.word HardFault_Handler
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word SVC_Handler
.word 0
.word 0
.word PendSV_Handler
.word SysTick_Handler
.word WWDG_IRQHandler /* Window WatchDog */
.word 0 /* Reserved */
.word RTC_IRQHandler /* RTC through the EXTI line */
.word FLASH_IRQHandler /* FLASH */
.word RCC_IRQHandler /* RCC */
.word EXTI0_1_IRQHandler /* EXTI Line 0 and 1 */
.word EXTI2_3_IRQHandler /* EXTI Line 2 and 3 */
.word EXTI4_15_IRQHandler /* EXTI Line 4 to 15 */
.word 0 /* Reserved */
.word DMA1_Channel1_IRQHandler /* DMA1 Channel 1 */
.word DMA1_Channel2_3_IRQHandler /* DMA1 Channel 2 and Channel 3 */
.word DMA1_Channel4_5_IRQHandler /* DMA1 Channel 4 and Channel 5 */
.word ADC1_IRQHandler /* ADC1 */
.word TIM1_BRK_UP_TRG_COM_IRQHandler /* TIM1 Break, Update, Trigger and Commutation */
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */
.word 0 /* Reserved */
.word TIM3_IRQHandler /* TIM3 */
.word TIM6_IRQHandler /* TIM6 */
.word TIM7_IRQHandler /* TIM7 */
.word TIM14_IRQHandler /* TIM14 */
.word TIM15_IRQHandler /* TIM15 */
.word TIM16_IRQHandler /* TIM16 */
.word TIM17_IRQHandler /* TIM17 */
.word I2C1_IRQHandler /* I2C1 */
.word I2C2_IRQHandler /* I2C2 */
.word SPI1_IRQHandler /* SPI1 */
.word SPI2_IRQHandler /* SPI2 */
.word USART1_IRQHandler /* USART1 */
.word USART2_IRQHandler /* USART2 */
.word USART3_4_IRQHandler /* USART3 and USART4 */
.word 0 /* Reserved */
.word USB_IRQHandler /* USB */
/*******************************************************************************
*
* Provide weak aliases for each Exception handler to the Default_Handler.
* As they are weak aliases, any function with the same name will override
* this definition.
*
*******************************************************************************/
.weak NMI_Handler
.thumb_set NMI_Handler,Default_Handler
.weak HardFault_Handler
.thumb_set HardFault_Handler,Default_Handler
.weak SVC_Handler
.thumb_set SVC_Handler,Default_Handler
.weak PendSV_Handler
.thumb_set PendSV_Handler,Default_Handler
.weak SysTick_Handler
.thumb_set SysTick_Handler,Default_Handler
.weak WWDG_IRQHandler
.thumb_set WWDG_IRQHandler,Default_Handler
.weak RTC_IRQHandler
.thumb_set RTC_IRQHandler,Default_Handler
.weak FLASH_IRQHandler
.thumb_set FLASH_IRQHandler,Default_Handler
.weak RCC_IRQHandler
.thumb_set RCC_IRQHandler,Default_Handler
.weak EXTI0_1_IRQHandler
.thumb_set EXTI0_1_IRQHandler,Default_Handler
.weak EXTI2_3_IRQHandler
.thumb_set EXTI2_3_IRQHandler,Default_Handler
.weak EXTI4_15_IRQHandler
.thumb_set EXTI4_15_IRQHandler,Default_Handler
.weak DMA1_Channel1_IRQHandler
.thumb_set DMA1_Channel1_IRQHandler,Default_Handler
.weak DMA1_Channel2_3_IRQHandler
.thumb_set DMA1_Channel2_3_IRQHandler,Default_Handler
.weak DMA1_Channel4_5_IRQHandler
.thumb_set DMA1_Channel4_5_IRQHandler,Default_Handler
.weak ADC1_IRQHandler
.thumb_set ADC1_IRQHandler,Default_Handler
.weak TIM1_BRK_UP_TRG_COM_IRQHandler
.thumb_set TIM1_BRK_UP_TRG_COM_IRQHandler,Default_Handler
.weak TIM1_CC_IRQHandler
.thumb_set TIM1_CC_IRQHandler,Default_Handler
.weak TIM3_IRQHandler
.thumb_set TIM3_IRQHandler,Default_Handler
.weak TIM6_IRQHandler
.thumb_set TIM6_IRQHandler,Default_Handler
.weak TIM7_IRQHandler
.thumb_set TIM7_IRQHandler,Default_Handler
.weak TIM14_IRQHandler
.thumb_set TIM14_IRQHandler,Default_Handler
.weak TIM15_IRQHandler
.thumb_set TIM15_IRQHandler,Default_Handler
.weak TIM16_IRQHandler
.thumb_set TIM16_IRQHandler,Default_Handler
.weak TIM17_IRQHandler
.thumb_set TIM17_IRQHandler,Default_Handler
.weak I2C1_IRQHandler
.thumb_set I2C1_IRQHandler,Default_Handler
.weak I2C2_IRQHandler
.thumb_set I2C2_IRQHandler,Default_Handler
.weak SPI1_IRQHandler
.thumb_set SPI1_IRQHandler,Default_Handler
.weak SPI2_IRQHandler
.thumb_set SPI2_IRQHandler,Default_Handler
.weak USART1_IRQHandler
.thumb_set USART1_IRQHandler,Default_Handler
.weak USART2_IRQHandler
.thumb_set USART2_IRQHandler,Default_Handler
.weak USART3_4_IRQHandler
.thumb_set USART3_4_IRQHandler,Default_Handler
.weak USB_IRQHandler
.thumb_set USB_IRQHandler,Default_Handler
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
/*
*******************************************************************************
* Copyright (c) 2018, STMicroelectronics
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************
*/
#include <pins_arduino.h>
#include <wiring.h>
#ifdef __cplusplus
extern "C" {
#endif
/**Firmware starts at address different than 0*/
/* figure out how to derive this from the LD script */
#define FW_START_ADDR 0x08002000
/**Force VectorTable to specific memory position defined in linker*/
volatile uint32_t ram_vector_table[48] __attribute__((section(".RAMVectorTable")));
// Pin number
const PinName digitalPin[] = {
/* USB connector on the top, MCU side */
/* Left Side */
PA15, //D0
PB3, //D1
PB4, //D2
PB5, //D3
PB6, //D4
PB7, //D5
PB8, //D6
PB9, //D7
PA10, //D10
PA9, //D11
PB15, //D13
PB14, //D14
PB13, //D15
PB12, //D16
/* Right side */
PC_13, //D17 - LED
PA_0, //D20/A0
PA_1, //D21/A1
PA_2, //D22/A2
PA_3, //D23/A3
PA_4, //D24/A4
PA_5, //D25/A5
PA_6, //D26/A6
PA_7, //D27/A7
PB_0, //D28/A8
PB_1, //D29/A9
PB_2, //D32 - BOOT1
PA_13, //D33 - SWDI0
PA_14, //D34 - SWCLK
/* Underside pads */
PA8, //D12
PB_10, //D30
PB_11, //D31
/* Other */
PB2, //D32/BOOT1
PA13, //D33/SWDIO
PA14, //D34/SWCLK
PC_14, //D18
PC_15, //D19
};
#ifdef __cplusplus
}
#endif
// ----------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
/**
* Initialize the variant. Note that this runs After
* the lib initializers - if they use an interrupt, they'll fail.
* Consider moving this to a call before the premains.
*/
void initVariant()
{
for (int i = 0; i < 48; i++) {
ram_vector_table[i] = *(volatile uint32_t *)(FW_START_ADDR + (i << 2));
}
__HAL_SYSCFG_REMAPMEMORY_SRAM();
}
/**
* @brief System Clock Configuration
* The system Clock is configured as follow :
* System Clock source = PLL (HSE)
* SYSCLK(Hz) = 48000000
* HCLK(Hz) = 48000000
* AHB Prescaler = 1
* APB1 Prescaler = 2
* APB2 Prescaler = 1
* PLL_Source = HSE
* PLL_Mul = 9
* Flash Latency(WS) = 2
* ADC Prescaler = 6
* USB Prescaler = 1.5
* @param None
* @retval None
*/
WEAK void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
/** Initializes the CPU, AHB and APB busses clocks
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL3;
RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/** Initializes the CPU, AHB and APB busses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB|RCC_PERIPHCLK_USART1
|RCC_PERIPHCLK_I2C1;
PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;
PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_HSI;
PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();
}
}
#ifdef __cplusplus
}
#endif
/*
*******************************************************************************
* Copyright (c) 2018, STMicroelectronics
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************
*/
#ifndef _VARIANT_ARDUINO_STM32_
#define _VARIANT_ARDUINO_STM32_
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
/*----------------------------------------------------------------------------
* Pins
*----------------------------------------------------------------------------*/
// USB connector on the top, MCU side
// Left Side
#define PA15 0
#define PB3 1
#define PB4 2
#define PB5 3
#define PB6 4
#define PB7 5
#define PB8 6
#define PB9 7
#define PA10 10
#define PA9 11
#define PB15 13
#define PB14 14
#define PB13 15
#define PB12 16
// Right side
#define PC13 17 // LED
#define PA0 20 // A0
#define PA1 21 // A1
#define PA2 22 // A2
#define PA3 23 // A3
#define PA4 24 // A4
#define PA5 25 // A5
#define PA6 26 // A6
#define PA7 27 // A7
#define PB0 28 // A8
#define PB1 29 // A9
// Underside pads
#define PA8 12
#define PB10 30
#define PB11 31
// Other
#define PA12 8 // USB DP
#define PA11 9 // USB DM
#define PB2 32 // BOOT1
#define PA13 33 // SWDI0
#define PA14 34 // SWCLK
#define PC14 18 // OSC32_IN
#define PC15 19 // OSC32_OUT
// This must be a literal
#define NUM_DIGITAL_PINS 35
// This must be a literal with a value less than or equal to to MAX_ANALOG_INPUTS
#define NUM_ANALOG_INPUTS 10
#define NUM_ANALOG_FIRST 20
// On-board LED pin number
#define LED_BUILTIN PC13
#define LED_GREEN LED_BUILTIN
// SPI Definitions
#define PIN_SPI_SS PA4
#define PIN_SPI_MOSI PA7
#define PIN_SPI_MISO PA6
#define PIN_SPI_SCK PA5
// I2C Definitions
#define PIN_WIRE_SDA PB7
#define PIN_WIRE_SCL PB6
// Timer Definitions
// Do not use timer used by PWM pins when possible. See PinMap_PWM.
#define TIMER_TONE TIM3
// Do not use basic timer: OC is required
#define TIMER_SERVO TIM3 //TODO: advanced-control timers don't work
// UART Definitions
#define SERIAL_UART_INSTANCE 1
// Default pin used for 'Serial' instance
// Mandatory for Firmata
#define PIN_SERIAL_RX PA10
#define PIN_SERIAL_TX PA9
// HAL configuration
#define HSE_VALUE 16000000U
#ifdef __cplusplus
} // extern "C"
#endif
/*----------------------------------------------------------------------------
* Arduino objects - C++ only
*----------------------------------------------------------------------------*/
#ifdef __cplusplus
// These serial port names are intended to allow libraries and architecture-neutral
// sketches to automatically default to the correct port name for a particular type
// of use. For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
//
// SERIAL_PORT_MONITOR Port which normally prints to the Arduino Serial Monitor
//
// SERIAL_PORT_USBVIRTUAL Port which is USB virtual serial
//
// SERIAL_PORT_LINUXBRIDGE Port which connects to a Linux system via Bridge library
//
// SERIAL_PORT_HARDWARE Hardware serial port, physical RX & TX pins.
//
// SERIAL_PORT_HARDWARE_OPEN Hardware serial ports which are open for use. Their RX & TX
// pins are NOT connected to anything by default.
#define SERIAL_PORT_MONITOR Serial
#define SERIAL_PORT_HARDWARE Serial1
#endif
#endif /* _VARIANT_ARDUINO_STM32_ */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment