{"id":29013920,"url":"https://github.com/armmbed/stm32customtargets","last_synced_at":"2025-06-25T20:12:27.210Z","repository":{"id":46597738,"uuid":"382357210","full_name":"ARMmbed/stm32customtargets","owner":"ARMmbed","description":"Enable the support of your custom boards in mbed-os 6","archived":false,"fork":false,"pushed_at":"2023-12-18T16:16:01.000Z","size":714,"stargazers_count":17,"open_issues_count":2,"forks_count":13,"subscribers_count":8,"default_branch":"master","last_synced_at":"2023-12-18T21:19:29.318Z","etag":null,"topics":["custom","stm32"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ARMmbed.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-apache-2.0.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-07-02T13:37:08.000Z","updated_at":"2023-10-23T12:19:15.000Z","dependencies_parsed_at":"2023-12-18T17:59:57.926Z","dependency_job_id":"2246d8d3-4c41-413e-82aa-e9dd6537167f","html_url":"https://github.com/ARMmbed/stm32customtargets","commit_stats":null,"previous_names":[],"tags_count":2,"template":null,"template_full_name":null,"purl":"pkg:github/ARMmbed/stm32customtargets","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARMmbed%2Fstm32customtargets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARMmbed%2Fstm32customtargets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARMmbed%2Fstm32customtargets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARMmbed%2Fstm32customtargets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ARMmbed","download_url":"https://codeload.github.com/ARMmbed/stm32customtargets/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ARMmbed%2Fstm32customtargets/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261945404,"owners_count":23234243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["custom","stm32"],"created_at":"2025-06-25T20:12:26.523Z","updated_at":"2025-06-25T20:12:27.168Z","avatar_url":"https://github.com/ARMmbed.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CUSTOM boards with STM32\n\nFeel free to propose your custom boards support in mbed-os!\n\n\nTable of Contents\n=================\n\n* [Usage](#usage)\n* [GENERIC BOARDS](#generic-boards)\n* [STM32F1](#stm32f1)\n   * [BLUEPILL](#bluepill)\n* [STM32F4](#stm32f4)\n   * [CORE2](#core2)\n* [STM32L0](#stm32l0)\n   * [MURATA LPWAN Wireless Module](#murata-lpwan-wireless-module)\n   * [MURATA Grasshopper](#murata-grasshopper)\n   * [MURATA Gnat](#murata-gnat)\n* [STM32L4](#stm32l4)\n   * [STWIN SensorTile Wireless Industrial Node development kit](#stwin-sensortile-wireless-industrial-node-development-kit)\n* [STM32WL](#stm32wl)\n   * [Seeed Studio LoRa E5](#seeed-studio-lora-e5)\n   * [Seeed Studio LoRa E5 Mini](#seeed-studio-lora-e5-mini)\n   * [Seeed Studio LoRa E5 Dev Board](#seeed-studio-lora-e5-dev-board)\n   * [Charles's LoRa-E5 breakout board](#charless-lora-e5-breakout-board)\n   * [Charles's LoRa-E5 Tiny](#charless-lora-e5-tiny)\n   * [RAK Wireless RAK3172](#rak-wireless-rak3172)\n   * [Charles's RAK3172 breakout board](#charless-rak3172-breakout-board)\n   * [RAK Wirekess RAK3172-SiP SOC](#rak-wirekess-rak3172-sip-soc)\n   * [RAK Wirekess RAK3272-SiP Breakout Board](#rak-wirekess-rak3272-sip-breakout-board)\n\n* [License](#license)\n* [Contributions](#contributions)\n   * [Automatic pull request checks](#automatic-pull-request-checks)\n   * [Manual pull request checks](#manual-pull-request-checks)\n   * [Automatic weekly non regression](#automatic-weekly-non-regression)\n\n\n# Usage\n\nIn your application, clone this repo.\n\n````\ngit clone https://github.com/ARMmbed/stm32customtargets.git\n````\n\nCopy custom_targets.json\n\n````\ncp stm32customtargets/custom_targets.json .\n````\n\nFor some targets, you have to customize the configuration in your local mbed_app.json.\n\nDetails are explained for each target below, but you can also use the mbed_app_template.json file as example.\n\nThen build your target with\n\n- CLI1:\n````\nmbed compile -m XXX -t XXX\n````\n\n- CLI2:\n\nAdd in the application CMakeLists.txt:\n````\nadd_subdirectory(stm32customtargets)\n````\nAnd build:\n````\nmbedtools compile -m XXX -t XXX\n````\n\n\n# GENERIC BOARDS\n\nA \"generic\" board is a mbed-os \"virtual\" target with a pure STM32 MCU.\n\nGoal is to make real custom boards creation very easy\nas we ensure that build has alrady been tested.\n\nCheck the GENERIC_TARGET branch in this repo:\n\nhttps://github.com/ARMmbed/stm32customtargets/tree/GENERIC_TARGET\n\n\n# STM32F1\n\n## BLUEPILL\n\n\u003cimg src=\"https://stm32-base.org/assets/img/boards/STM32F103C8T6_Blue_Pill-1.jpg\" width=\"200\"\u003e\n\nMCU: STM32F103C8T6\n\nTARGET: BLUEPILL_F103C8\n\n\n\nsource: https://os.mbed.com/users/hudakz/code/mbed-os-bluepill/\n\n (https://os.mbed.com/users/hudakz/code/STM32F103C8T6_Hello/)\n\n\n# STM32F4\n\n## CORE2 \n\nMCU: STM32F407ZG\n\nTARGET: CORE2\n\nhttps://github.com/byq77/core2-mbed6-template\n\n# STM32L0\n\n## MURATA LPWAN Wireless Module\n\nMCU: STM32L082CZ\n\nTARGET: MTB_MURATA_ABZ\n\nhttps://wireless.murata.com/type-abz-078.html\n\n- LORA is not enabled by default. You need to update your local mbed_app.json file:\n\n```json\n{\n    \"target_overrides\": {\n        \"MTB_MURATA_ABZ\": {\n            \"target.components_add\":             [\"SX1276\"],\n            \"sx1276-lora-driver.spi-mosi\":       \"LORA_SPI_MOSI\",\n            \"sx1276-lora-driver.spi-miso\":       \"LORA_SPI_MISO\",\n            \"sx1276-lora-driver.spi-sclk\":       \"LORA_SPI_SCLK\",\n            \"sx1276-lora-driver.spi-cs\":         \"LORA_CS\",\n            \"sx1276-lora-driver.reset\":          \"LORA_RESET\",\n            \"sx1276-lora-driver.dio0\":           \"LORA_DIO0\",\n            \"sx1276-lora-driver.dio1\":           \"LORA_DIO1\",\n            \"sx1276-lora-driver.dio2\":           \"LORA_DIO2\",\n            \"sx1276-lora-driver.dio3\":           \"LORA_DIO3\",\n            \"sx1276-lora-driver.txctl\":          \"LORA_ANT_TX\",\n            \"sx1276-lora-driver.rxctl\":          \"LORA_ANT_RX\",\n            \"sx1276-lora-driver.pwr-amp-ctl\":    \"LORA_ANT_BOOST\"\n        }\n    }\n}\n```\n\nIf you need to Low Power with VDD TXCO like [b-l072z-lrwan1](https://www.st.com/en/evaluation-tools/b-l072z-lrwan1.html), then you need JP9 positionned 1-2.\nAnd reflect the pin used for that because it's defined to `NC` by default.\n\n```json\n{\n    \"target_overrides\": {\n        \"MTB_MURATA_ABZ\": {\n            \"sx1276-lora-driver.tcxo\":           \"PA_12\"\n        }\n    }\n}\n```\n\n## MURATA Grasshopper\n\nMCU: STM32L082CZ\n\n\u003cimg src=\"https://cdn.hackaday.io/images/6752761516323719376.jpg\" width=\"200\"/\u003e\n\nTARGET: GRASSHOPPER [TleraCorp](https://www.tindie.com/stores/tleracorp/)\n\n- LORA is not enabled by default. You need to update your local mbed_app.json file:\n\n```json\n{\n    \"target_overrides\": {\n        \"GRASSHOPPER\": {\n            \"target.components_add\":             [\"SX1276\"],\n            \"sx1276-lora-driver.spi-mosi\":       \"LORA_SPI_MOSI\",\n            \"sx1276-lora-driver.spi-miso\":       \"LORA_SPI_MISO\",\n            \"sx1276-lora-driver.spi-sclk\":       \"LORA_SPI_SCLK\",\n            \"sx1276-lora-driver.spi-cs\":         \"LORA_CS\",\n            \"sx1276-lora-driver.reset\":          \"LORA_RESET\",\n            \"sx1276-lora-driver.dio0\":           \"LORA_DIO0\",\n            \"sx1276-lora-driver.dio1\":           \"LORA_DIO1\",\n            \"sx1276-lora-driver.dio2\":           \"LORA_DIO2\",\n            \"sx1276-lora-driver.dio3\":           \"LORA_DIO3\",\n            \"sx1276-lora-driver.txctl\":          \"LORA_ANT_TX\",\n            \"sx1276-lora-driver.rxctl\":          \"LORA_ANT_RX\",\n            \"sx1276-lora-driver.pwr-amp-ctl\":    \"LORA_ANT_BOOST\",\n            \"sx1276-lora-driver.tcxo\":           \"LORA_VDD_TXCO\"\n        }\n    }\n}\n```\n\n## MURATA Gnat\n\nMCU: STM32L082CZ\n\n\u003cimg src=\"https://cdn.hackaday.io/images/7985811531762726918.jpg\" width=\"200\"\u003e\n\nhttps://www.tindie.com/products/tleracorp/gnat-loragnss-asset-tracker/\u003c/img\u003e\n\nTARGET: GNAT [TleraCorp](https://www.tindie.com/products/tleracorp/gnat-loragnss-asset-tracker/)\n\n- LORA is not enabled by default. You need to update your local mbed_app.json file:\n\n```json\n{\n    \"target_overrides\": {\n        \"GNAT\": {\n            \"target.components_add\":             [\"SX1276\"],\n            \"sx1276-lora-driver.spi-mosi\":       \"LORA_SPI_MOSI\",\n            \"sx1276-lora-driver.spi-miso\":       \"LORA_SPI_MISO\",\n            \"sx1276-lora-driver.spi-sclk\":       \"LORA_SPI_SCLK\",\n            \"sx1276-lora-driver.spi-cs\":         \"LORA_CS\",\n            \"sx1276-lora-driver.reset\":          \"LORA_RESET\",\n            \"sx1276-lora-driver.dio0\":           \"LORA_DIO0\",\n            \"sx1276-lora-driver.dio1\":           \"LORA_DIO1\",\n            \"sx1276-lora-driver.dio2\":           \"LORA_DIO2\",\n            \"sx1276-lora-driver.dio3\":           \"LORA_DIO3\",\n            \"sx1276-lora-driver.txctl\":          \"LORA_ANT_TX\",\n            \"sx1276-lora-driver.rxctl\":          \"LORA_ANT_RX\",\n            \"sx1276-lora-driver.pwr-amp-ctl\":    \"LORA_ANT_BOOST\",\n            \"sx1276-lora-driver.tcxo\":           \"LORA_VDD_TXCO\"\n        }\n    }\n}\n```\n\n\n# STM32L4\n\n## STWIN SensorTile Wireless Industrial Node development kit\n\nMCU: STM32L4R9ZI\n\n\u003cimg src=\"https://www.st.com/bin/ecommerce/api/image.PF268005.en.feature-description-include-personalized-no-cpn-large.jpg\"  width=\"200\"\u003e\n\nTARGET: STWIN\n\nhttps://www.st.com/en/evaluation-tools/steval-stwinkt1.html\n\n- BLE is enabled by default\n\n\n# STM32WL\n\n## Seeed Studio LoRa E5\n\n\u003cimg src=\"https://files.seeedstudio.com/products/317990687/image/lora-e5_Preview-07.png\" width=\"200\"\u003e\n\nMCU: STM32WLE5JC\n\nTARGET: LORA_E5\n\nhttps://www.seeedstudio.com/LoRa-E5-Wireless-Module-p-4745.html\n\nLoRa-E5 use only RFO_HP for TX power, so for all boards using this module you need to add this to your `mbed_app.json` on section `target_overrides`\n\n```json\n\n   \"LORA_E5\": {\n      \"stm32wl-lora-driver.rf_switch_config\": 2\n   }\n```\n\n## Seeed Studio LoRa E5 Mini\n\nTARGET: LORA_E5_MINI\n\nUse LoRa E5 modulen basic board with USB/Serial and headers\n\nhttps://www.seeedstudio.com/LoRa-E5-mini-STM32WLE5JC-p-4869.html\n\n\n## Seeed Studio LoRa E5 Dev Board\n\n\u003cimg src=\"https://files.seeedstudio.com/wiki/LoRa-E5_Development_Kit/202003261_preview-07.png\" width=\"200\"\u003e\n\nTARGET: LORA_E5_DEV_BOARD\n\nUse LoRa E5 module \n\nhttps://www.seeedstudio.com/LoRa-E5-Dev-Kit-p-4868.html\n\n- RS485 Modbus\n- all LoRa-E5 pins exposed\n- temperature sensor\n- buttons\n- Led \n- GPIO to enable 3.3V and 5V for sensors\n- some grove sonnectors (I2C, Serial, ..)\n- Arduino form factor to plug shield\n\n\n## Charles's LoRa-E5 breakout board\n\nTARGET: LORA_E5_BREAKOUT\n\n\u003cimg src=\"https://github.com/hallard/LoRa-E5-Breakout/blob/main/pictures/LoRa-E5-Breakout-top.png\" width=\"200\"\u003e\n\nhttps://github.com/hallard/LoRa-E5-Breakout\n\nUse LoRa E5 module and added\n\n- FTDI 6 pins connector (:warning: **use 3.3V FTDI One, not 5V**)\n- Exposed JTAG pins needed to flash module (PA13-SWDIO / PA14-SWCLK / RESET)\n- Green Led on PB10 (LED1) reversed (1=OFF, 0=ON)\n- Red Led on PB5 (LED2) reversed (1=OFF, 0=ON)\n\nfor debug LEDs of breakout so you need to add this to your `mbed_app.json` on section `target_overrides` and don't forget also the `rf_switch_config` seen above\n\n\n```json\n   \"LORA_E5_BREAKOUT\": {\n      \"stm32wl-lora-driver.rf_switch_config\": 2,\n      \"stm32wl-lora-driver.debug_tx\": \"PB_5\",\n      \"stm32wl-lora-driver.debug_rx\": \"PB_10\",\n      \"stm32wl-lora-driver.debug_invert\": 1\n   }\n```\n\n## Charles's LoRa-E5 Tiny\n\nTARGET: LORA_E5_TINY\n\n\u003cimg src=\"https://github.com/hallard/LoRa-E5-Tiny/blob/main/pictures/LoRa-E5-Tiny-top.png\" width=\"200\"\u003e\n\nhttps://github.com/hallard/LoRa-E5-Tiny\n\nUse LoRa E5 module with CR2450 cell coin\n\n- FTDI SMD 6 pads edge connector (:warning: **use 3.3V FTDI One, not 5V**)\n- JTAG SMD 6 pads edge connector to flash module (PA13-SWDIO / PA14-SWCLK / PB3-SWO / RESET)\n- Green Led on PB13\n- Red Led on PA9\n- 2 Tactile Switches (user PB4 and reset)\n- Stemma QWIIC I2C connector\n- PTH CR2450 battery holder\n\nfor debug LEDs of this board you need to add this to your `mbed_app.json` on section `target_overrides` and don't forget also the `rf_switch_config` seen above\n\n\n```json\n   \"LORA_E5_TINY\": {\n      \"stm32wl-lora-driver.rf_switch_config\": 2,\n      \"stm32wl-lora-driver.debug_tx\": \"PB_13\",\n      \"stm32wl-lora-driver.debug_rx\": \"PA_9\"\n   }\n```\n\n\n## RAK Wireless RAK3172\n\n\u003cimg src=\"https://docs.rakwireless.com/assets/images/wisduo/rak3172-module/overview/RAK3172_Module_buy.png\" width=\"200\"\u003e\n\nMCU: STM32WLE5CC\n\nTARGET: RAK3172\n\nRAK3172 use only RFO_HP for TX power and no TXCO so for all boards using this module you need to add this to your `mbed_app.json` on section `target_overrides`\n\n```json\n\n   \"RAK3172\": {\n      \"stm32wl-lora-driver.rf_switch_config\": 2,\n      \"stm32wl-lora-driver.crystal_select\" : 0\n   }\n```\n\n## Charles's RAK3172 breakout board\n\nTARGET: RAK3172_BREAKOUT\n\n\u003cimg src=\"https://github.com/hallard/RAK3172-Breakout/blob/main/pictures/RAK3172-Breakout-top.png\" width=\"200\"\u003e\n\nhttps://github.com/hallard/RAK3172-Breakout\n\nUse RAK3172 and added\n\n- FTDI 6 pins connector (:warning: **use 3.3V FTDI One, not 5V**)\n- Exposed JTAG pins needed to flash module (PA13-SWDIO / PA14-SWCLK / RESET)\n- Green Led on PA10 (LED1) reversed (1=OFF, 0=ON)\n- Red Led on PA9 (LED2) reversed (1=OFF, 0=ON)\n- SMD CR2450 battery holder\n\nFor debug LEDs of breakout so you need to add this to your `mbed_app.json` on section `target_overrides` and don't forget also the `rf_switch_config` and `crystal_select` seen above\n\n```json\n   \"RAK3172_BREAKOUT\": {\n      \"stm32wl-lora-driver.rf_switch_config\": 2,\n      \"stm32wl-lora-driver.crystal_select\" : 0,\n      \"stm32wl-lora-driver.debug_tx\": \"PA_10\",\n      \"stm32wl-lora-driver.debug_rx\": \"PA_9\",\n      \"stm32wl-lora-driver.debug_invert\": 1\n   }\n```\n\n\n\n\n## RAK Wirekess RAK3172-SiP SOC\n\n\u003cimg src=\"https://docs.rakwireless.com/assets/images/wisduo/rak3172-sip/overview/RAK3172_SiP_home.png\" width=\"200\"\u003e\n\nMCU: STM32WLE5CC\n\nTARGET: RAK3172SIP\n\nRAK3172-SIP SOC is just a SOC, you can build your own boards with this module, check below the usage for the RAK3272-SiP Breakout Board reference board and an example of board definition and usage.\n\n\n## RAK Wirekess RAK3272-SiP Breakout Board\n\n\u003cimg src=\"https://docs.rakwireless.com/assets/images/wisduo/rak3272-sip-breakout-board/overview/RAK3272-SiP-Breakout_home.png\" width=\"200\"\u003e\n\nMCU: STM32WLE5CC\n\nTARGET: RAK3272_SIP_BREAKOUT\n\nRAK3172-SIP SOC exists in two versions, both with TCXO connected to PB0 (so you can disable it for low power):\n\n- RAK3172-SIP using high power path (\u003e14db) that use only RFO_HP for TX power, you need to add this to your `mbed_app.json` on section `target_overrides`\n\n```json\n\n   \"RAK3272_BREAKOUT\": {\n      \"stm32wl-lora-driver.rf_switch_config\": \"RBI_CONF_RFO_HP\",\n      \"stm32wl-lora-driver.crystal_select\" : 1\n   }\n```\n\n- RAK3172LP-SIP using low power path only (\u003c=14db) that use only RFO_LP for TX power, you need to add this to your `mbed_app.json` on section `target_overrides`\n\n```json\n\n   \"RAK3272_BREAKOUT\": {\n      \"stm32wl-lora-driver.rf_switch_config\": \"RBI_CONF_RFO_LP\",\n      \"stm32wl-lora-driver.crystal_select\" : 1\n   }\n```\n\n\n# License\n\nThe software is provided under the [Apache-2.0 license](LICENSE-apache-2.0.txt).\n\n\n# Contributions\n\nContributions to this project are accepted under the same license.\n\n## Automatic pull request checks\n\n- Build with CLI1 should be OK\n```\npython aci_build.py\n```\n\n- Build with CLI2 should be OK\n```\npython aci_build.py --cli2\n```\n\nNote that build is using the mbed_app_template.json file as configuration file.\n\n- Standard Pin Names check should be OK\n\nhttps://os.mbed.com/docs/mbed-os/latest/apis/standard-pin-names.html\n\n```\npython aci_build.py --pin\n```\n\n\n## Manual pull request checks\n\n- Each target in custom_targets.json should be described in the README.md file\n\n```\n## \u003cFull target name\u003e\n\nMCU: \u003cSTM32 MCU\u003e\n\nTARGET: \u003cTarget name for build\u003e\n\n\u003cLink to a webpage describing this board\u003e\n\n\u003call other info is optional\u003e\n\n```\n\nNote we limit image size to 200\n\n- Keep Table of Contents up to date\n\n\n## Automatic weekly non regression\n\nA full non regression is executed each week-end\n\n```\npython aci_build.py --all\npython aci_build.py --all --baremetal\npython aci_build.py --all --cli2\npython aci_build.py --all --cli2 --baremetal\npython aci_build.py --all --pin\n```\n\nSee in https://github.com/ARMmbed/stm32customtargets/actions\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmmbed%2Fstm32customtargets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farmmbed%2Fstm32customtargets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmmbed%2Fstm32customtargets/lists"}