Skip to content

add stm32c5 support#3636

Open
HiFiPhile wants to merge 3 commits into
masterfrom
stm32c5
Open

add stm32c5 support#3636
HiFiPhile wants to merge 3 commits into
masterfrom
stm32c5

Conversation

@HiFiPhile
Copy link
Copy Markdown
Collaborator

stm32c5 uses HAL2 new driver which is a bit different.

Copilot AI review requested due to automatic review settings May 10, 2026 12:03
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds TinyUSB support scaffolding for the new STM32C5 family (HAL2-based drivers) by wiring the MCU option into the STM32 FSDEV backend, adding a BSP/board definition, and updating dependency fetching + CI/docs accordingly.

Changes:

  • Introduce OPT_MCU_STM32C5 and enable STM32 FSDEV (DRD, 2KB PMA) configuration paths for STM32C5.
  • Add STM32C5 BSP support (make/cmake build files, family implementation, Nucleo-C542 board files, HAL/FreeRTOS config headers).
  • Update dependency lists, CI build matrix, board/docs lists, and example allowlists to include STM32C5.

Reviewed changes

Copilot reviewed 27 out of 27 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tools/get_deps.py Adds STM32C5 DFP/driver repos and tags STM32C5 under CMSIS_6 fetching.
src/tusb_option.h Adds OPT_MCU_STM32C5 MCU option.
src/portable/st/stm32_fsdev/fsdev_stm32.h Adds STM32C5 header include, IRQ mapping, and CPU MHz setting for FSDEV.
src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c Documents STM32C5 FSDEV characteristics.
src/common/tusb_mcu.h Enables FSDEV+DRD configuration for STM32C5 with 2KB PMA.
README.rst Lists STM32C5 under supported STM32 FSDEV parts.
hw/bsp/stm32c5/stm32c5xx_hal_conf.h Adds STM32C5 HAL2 configuration header template.
hw/bsp/stm32c5/FreeRTOSConfig/FreeRTOSConfig.h Adds FreeRTOS configuration for STM32C5 BSP.
hw/bsp/stm32c5/family.mk Adds make-based build support for STM32C5 family.
hw/bsp/stm32c5/family.cmake Adds CMake build integration for STM32C5 family.
hw/bsp/stm32c5/family.c Adds STM32C5 board API implementation (clock, GPIO, UART, USB IRQ forwarding).
hw/bsp/stm32c5/boards/stm32c542nucleo/board.mk Defines STM32C542 Nucleo variant flags and linker script for make builds.
hw/bsp/stm32c5/boards/stm32c542nucleo/board.h Adds STM32C542 Nucleo pinout and clock init.
hw/bsp/stm32c5/boards/stm32c542nucleo/board.cmake Adds STM32C542 Nucleo compile definitions and linker script paths for CMake.
hw/bsp/BoardPresets.json Adds configure/build presets for stm32c542nucleo.
examples/host/msc_file_explorer/only.txt Allows running this host example on STM32C5.
examples/host/midi_rx/only.txt Allows running this host example on STM32C5.
examples/host/device_info/only.txt Allows running this host example on STM32C5.
examples/host/cdc_msc_hid/only.txt Allows running this host example on STM32C5.
examples/host/cdc_msc_hid_freertos/only.txt Allows running this host example on STM32C5.
examples/host/bare_api/only.txt Allows running this host example on STM32C5.
examples/dual/dynamic_switch/only.txt Allows running this dual-role example on STM32C5.
examples/device/printer_to_cdc/CMakePresets.json Adds preset include file for BoardPresets reuse.
examples/device/cdc_msc_throughput/CMakePresets.json Adds preset include file for BoardPresets reuse.
docs/reference/dependencies.rst Documents STM32C5 DFP/drivers and CMSIS_6 usage in dependencies list.
docs/reference/boards.rst Adds stm32c542nucleo to the boards reference list.
.github/workflows/ci_set_matrix.py Adds stm32c5 to CI toolchain matrix.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread hw/bsp/stm32c5/family.c
Comment thread hw/bsp/stm32c5/stm32c5xx_hal_conf.h
Comment thread tools/get_deps.py
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 10, 2026

TinyUSB Average Code Size Metrics

File .text .rodata .data .bss size %
ehci.c 2763 0 0 6172 7701 4.7%
cdc_host.c 6367 487 15 962 7553 4.6%
ncm_device.c 1754 28 815 4307 6074 3.7%
usbh.c 4667 58 110 1035 5835 3.5%
hcd_dwc2.c 5014 25 1 513 5552 3.4%
video_device.c 4432 5 1235 480 4904 3.0%
midi_host.c 1339 7 7 3538 4880 2.9%
dcd_dwc2.c 4245 19 0 265 4529 2.7%
audio_device.c 2890 0 1259 1623 4508 2.7%
ohci.c 1919 0 0 2464 4383 2.6%
usbd.c 3518 58 90 355 3937 2.4%
dcd_ch32_usbfs.c 1475 0 0 2444 3919 2.4%
ecm_rndis_device.c 1059 0 1 2759 3818 2.3%
hcd_stm32_fsdev.c 3249 0 1 420 3670 2.2%
dcd_ft9xx.c 3280 0 0 172 3452 2.1%
msc_device.c 2513 108 2281 804 3318 2.0%
dcd_khci.c 1952 0 0 1290 3242 2.0%
dcd_nrf5x.c 2940 0 0 292 3232 2.0%
hcd_musb.c 3070 0 0 157 3228 1.9%
dcd_ci_fs.c 1924 0 0 1290 3214 1.9%
dcd_da146xx.c 3067 0 0 144 3211 1.9%
hcd_rusb2.c 2923 0 0 245 3168 1.9%
dcd_rusb2.c 2917 0 0 156 3073 1.9%
hcd_ch32_usbfs.c 2485 0 0 498 2983 1.8%
hcd_khci.c 2442 0 0 449 2891 1.7%
dcd_stm32_fsdev.c 2544 0 0 291 2835 1.7%
dcd_mm32f327x_otg.c 1477 0 0 1290 2767 1.7%
hcd_samd.c 2220 0 0 324 2544 1.5%
usbtmc_device.c 2194 24 68 313 2539 1.5%
dcd_ci_hs.c 1758 0 0 1344 2535 1.5%
dcd_eptri.c 2272 0 0 259 2531 1.5%
hid_host.c 1240 0 0 1270 2510 1.5%
dcd_musb.c 2226 0 0 171 2396 1.4%
hcd_rp2040.c 2000 17 4 321 2342 1.4%
mtp_device.c 1692 22 735 589 2289 1.4%
dcd_rp2040.c 841 0 764 653 2258 1.4%
msc_host.c 1635 0 0 395 2030 1.2%
dcd_msp430x5xx.c 1799 0 0 176 1975 1.2%
cdc_device.c 1236 16 1092 728 1963 1.2%
dcd_ch32_usbhs.c 1468 0 0 448 1916 1.2%
dcd_lpc17_40.c 1478 0 0 648 1802 1.1%
midi_device.c 1149 0 1007 619 1765 1.1%
dcd_nuc505.c 0 0 1532 157 1689 1.0%
dcd_lpc_ip3511.c 1463 0 0 264 1683 1.0%
hub.c 1384 8 8 30 1418 0.9%
dcd_samg.c 1321 0 0 72 1393 0.8%
printer_device.c 828 0 706 560 1387 0.8%
dcd_samd.c 1036 0 0 266 1302 0.8%
dcd_nuc121.c 1168 0 0 101 1270 0.8%
hid_device.c 1123 44 997 119 1242 0.8%
vendor_device.c 639 0 534 559 1197 0.7%
dcd_nuc120.c 1095 0 0 78 1173 0.7%
rp2040_usb.c 378 35 631 11 1055 0.6%
dfu_device.c 776 28 712 136 912 0.6%
tusb_fifo.c 849 0 483 0 844 0.5%
typec_stm32.c 820 8 2 12 842 0.5%
dwc2_common.c 603 22 0 0 615 0.4%
usbc.c 420 2 20 166 608 0.4%
hcd_pio_usb.c 262 0 240 0 502 0.3%
tusb.c 450 0 383 3 452 0.3%
fsdev_common.c 180 0 0 0 180 0.1%
hcd_ci_hs.c 180 0 0 0 180 0.1%
rusb2_common.c 160 0 16 0 176 0.1%
dfu_rt_device.c 157 0 134 0 157 0.1%
TOTAL 118725 1021 15883 45207 165549 100.0%
Input files
  • cmake-build/cmake-build-adafruit_clue/metrics.json
  • cmake-build/cmake-build-apard32690/metrics.json
  • cmake-build/cmake-build-at32f403a_weact_blackpill/metrics.json
  • cmake-build/cmake-build-at_start_f402/metrics.json
  • cmake-build/cmake-build-at_start_f413/metrics.json
  • cmake-build/cmake-build-at_start_f415/metrics.json
  • cmake-build/cmake-build-at_start_f423/metrics.json
  • cmake-build/cmake-build-at_start_f425/metrics.json
  • cmake-build/cmake-build-at_start_f435/metrics.json
  • cmake-build/cmake-build-at_start_f455/metrics.json
  • cmake-build/cmake-build-b_g474e_dpow1/metrics.json
  • cmake-build/cmake-build-b_u585i_iot2a/metrics.json
  • cmake-build/cmake-build-ch32f205r-r0/metrics.json
  • cmake-build/cmake-build-ch32v103r_r1_1v0/metrics.json
  • cmake-build/cmake-build-ch32v203c_r0_1v0/metrics.json
  • cmake-build/cmake-build-ch32v307v_r1_1v0/metrics.json
  • cmake-build/cmake-build-cynthion_d11/metrics.json
  • cmake-build/cmake-build-da14695_dk_usb/metrics.json
  • cmake-build/cmake-build-double_m33_express/metrics.json
  • cmake-build/cmake-build-ea4088_quickstart/metrics.json
  • cmake-build/cmake-build-ea4357/metrics.json
  • cmake-build/cmake-build-ek_tm4c123gxl/metrics.json
  • cmake-build/cmake-build-feather_stm32f405/metrics.json
  • cmake-build/cmake-build-fomu/metrics.json
  • cmake-build/cmake-build-frdm_k32l2a4s/metrics.json
  • cmake-build/cmake-build-frdm_k64f/metrics.json
  • cmake-build/cmake-build-frdm_kl25z/metrics.json
  • cmake-build/cmake-build-frdm_mcxa153/metrics.json
  • cmake-build/cmake-build-frdm_rw612/metrics.json
  • cmake-build/cmake-build-hpm6750evk2/metrics.json
  • cmake-build/cmake-build-lpcxpresso11u37/metrics.json
  • cmake-build/cmake-build-lpcxpresso1347/metrics.json
  • cmake-build/cmake-build-lpcxpresso1549/metrics.json
  • cmake-build/cmake-build-lpcxpresso1769/metrics.json
  • cmake-build/cmake-build-lpcxpresso18s37/metrics.json
  • cmake-build/cmake-build-lpcxpresso51u68/metrics.json
  • cmake-build/cmake-build-lpcxpresso54114/metrics.json
  • cmake-build/cmake-build-metro_m0_express/metrics.json
  • cmake-build/cmake-build-metro_m4_express/metrics.json
  • cmake-build/cmake-build-metro_m7_1011/metrics.json
  • cmake-build/cmake-build-mm32f327x_mb39/metrics.json
  • cmake-build/cmake-build-mm900evxb/metrics.json
  • cmake-build/cmake-build-msp_exp430f5529lp/metrics.json
  • cmake-build/cmake-build-msp_exp432e401y/metrics.json
  • cmake-build/cmake-build-nutiny_nuc126v/metrics.json
  • cmake-build/cmake-build-nutiny_sdk_nuc120/metrics.json
  • cmake-build/cmake-build-nutiny_sdk_nuc121/metrics.json
  • cmake-build/cmake-build-nutiny_sdk_nuc505/metrics.json
  • cmake-build/cmake-build-portenta_c33/metrics.json
  • cmake-build/cmake-build-raspberry_pi_pico/metrics.json
  • cmake-build/cmake-build-raspberrypi_cm4/metrics.json
  • cmake-build/cmake-build-raspberrypi_zero/metrics.json
  • cmake-build/cmake-build-samg55_xplained/metrics.json
  • cmake-build/cmake-build-sipeed_longan_nano/metrics.json
  • cmake-build/cmake-build-stlinkv3mini/metrics.json
  • cmake-build/cmake-build-stm32c071nucleo/metrics.json
  • cmake-build/cmake-build-stm32c542nucleo/metrics.json
  • cmake-build/cmake-build-stm32f070rbnucleo/metrics.json
  • cmake-build/cmake-build-stm32f103_bluepill/metrics.json
  • cmake-build/cmake-build-stm32f207nucleo/metrics.json
  • cmake-build/cmake-build-stm32f303disco/metrics.json
  • cmake-build/cmake-build-stm32g0b1nucleo/metrics.json
  • cmake-build/cmake-build-stm32h503nucleo/metrics.json
  • cmake-build/cmake-build-stm32h743eval/metrics.json
  • cmake-build/cmake-build-stm32h7s3nucleo/metrics.json
  • cmake-build/cmake-build-stm32l052dap52/metrics.json
  • cmake-build/cmake-build-stm32l412nucleo/metrics.json
  • cmake-build/cmake-build-stm32n6570dk/metrics.json
  • cmake-build/cmake-build-stm32u083cdk/metrics.json
  • cmake-build/cmake-build-stm32wb55nucleo/metrics.json
  • cmake-build/cmake-build-stm32wba_nucleo/metrics.json
  • cmake-build/cmake-build-xmc4500_relax/metrics.json

Signed-off-by: HiFiPHile <admin@hifiphile.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 10, 2026

MemBrowse Memory Report

No memory changes detected across 2291 targets. View Project Dashboard →

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants