====== STM32 "Blue Pill" ====== Some quick notes about setting up a STM32F103C8T6 [[https://wiki.stm32duino.com/index.php?title=Blue_Pill|"Blue Pill"]] for development on Arduino.((I got mine from https://www.ebay.com/itm/STM32F103C8T6-ARM-STM32-Minimum-System-Development-Board-Module-for-Arduino-US/191896085961)) This page describes the process for settings things up with the [[https://github.com/rogerclarkmelbourne/Arduino_STM32|Arduino_STM32]] tools originally developed by Roger Clarke. **These tools are now effectively unsupported**. The main alternative that //is// supported is the [[https://github.com/stm32duino|Arduino_Core_STM32]] project. I don't know how much of what's below transfers to Arduino_Core_STM32. ===== Setup ===== ==== Hardware ==== In addition to a "Blue Pill," you will need a **3.3V USB to serial converter**. Lots of pins on the STM32F103C8T6 are purported to be 5V tolerant. The main DC isn't, and I don't know if TX/RX are. So, play it safe and use a 3.3V serial converter. I used a [[https://www.sparkfun.com/products/14050|SparkFun Serial Basic]] configured for 3.3V. Only the TX and RX pins and, optionally, power will be used, so you should be able to use a standard FTDI board as well. === Mind the voltages! === Some serial converter boards put out 5V as VCC even when set to 3.3V mode. Applying 5V to the 3.3V main supply line of a Blue Pill will kill it. //Carefully check your 3.3V serial converter board// to see whether the VCC output is 3.3V or 5V. There is a 5V input on the Blue Pill and a USB connector that can power the board from 5V. These go through a small 3.3V regulator. === Connections === * Connect ground from the serial converter board to the ''GND'' pins of the Blue Pill. * Connect the serial converter's RX to the Blue Pill's ''A9''. * Connect the serial converter's TX to the Blue Pill's ''A10''. * If you will be powering the Blue Pill from the serial converter board, connect VCC from the serial converter board to the ''3.3'' pin of the Blue Pill if your serial converter board provides a 3.3V VCC output or the ''5V'' pin if your serial converter board only puts out 5V VCC. ==== Arduino environment ==== Do once: * Under //Files > Preferences//, add to the "Additional Boards Manager URLs:" field((It [[https://github.com/stm32duino/Arduino_Core_STM32#getting-started|looks like]] the URL for the boards has changed to\\ ''https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json''. However, this list is incompatible with the list at\\ ''http://dan.drown.org/stm32duino/package_STM32duino_index.json''.)):\\ ''http://dan.drown.org/stm32duino/package_STM32duino_index.json'' * Under //Tools > Board > Boards Manager ...//, find "**STM32F1xxx/GD32F1xxx boards** by stm32duino" and install it. ==== Project config ==== Under the //Tools// menu, make the following selections: * //Board// : "Generic STM32F103C series" * //Variant// : "STM32F103C8 (20k RAM. 64k Flash)" * //Upload method// : "Serial" * //CPU Speed(MHz)// : "72Mhz (Normal)" * //Optimize// : "Smallest (default)" * //Port// : wherever the serial converter is plugged into ===== Programming ===== * Move the BOOT0 jumper (i.e., the one furthest from the Reset button) to the 1 position (i.e., to the 3.3V pin, closest to the microcontroller IC). * Push reset. * Upload the sketch. It should start running. To re-upload, push reset and upload. To put the device into "use" mode, move the BOOT0 jumper back to the 0 position (i.e., to GND, away from the microcontroller IC). ===== Pinout ===== From [[https://wiki.stm32duino.com/images/a/ae/Bluepillpinout.gif | here]] ([[https://web.archive.org/web/20190316201948/https://wiki.stm32duino.com/images/a/ae/Bluepillpinout.gif|Wayback Machine snapshot]]).((An alternative pinout diagram is available [[https://www.stm32duino.com/viewtopic.php?t=2202| here ]] ([[https://web.archive.org/web/20190317141226/http://www.stm32duino.com/viewtopic.php?t=2202|Wayback Machine snapshot]]).)) {{:arduino:bluepillpinout.gif?direct|}} ===== Resources ===== ==== STM32duino ==== The [[https://www.stm32duino.com/|stm32duino.com]] domain [[https://github.com/stm32duino/Arduino_Core_STM32/issues/574|went down]] some time ago, apparently because it exceeded the host's traffic limit. The forums are now back online, but not the wiki. You can use the Wayback Machine snapshot links to access unavailable pages. * [[http://wiki.stm32duino.com/index.php?title=Main_Page|STM32duino wiki]] ([[https://web.archive.org/web/20190502185334/http://wiki.stm32duino.com/index.php?title=Main_Page | Wayback Machine snapshot]]) * [[https://wiki.stm32duino.com/index.php?title=Blue_Pill|STM32duino Blue Pill wiki page]] ([[https://web.archive.org/web/20190524151648/http://wiki.stm32duino.com/index.php?title=Blue_Pill|Wayback Machine snapshot]]) * [[https://wiki.stm32duino.com/index.php?title=RobotDyn_Black_Pill|STM32duino RobotDyn Black Pill wiki page]] ([[https://web.archive.org/web/20190316160629/https://wiki.stm32duino.com/index.php?title=RobotDyn_Black_Pill|Wayback Machine snapshot]]) * [[https://www.stm32duino.com/|STM32duino forum]] ([[https://web.archive.org/web/20190715072346/http://www.stm32duino.com/|Wayback Machine snapshot]]) * [[https://github.com/rogerclarkmelbourne|GitHub repositories]] for Roger Clarke's Arduino_STM32 based tools. * [[https://github.com/stm32duino|GitHub repositories]] for the Arduino_Core_STM32 based tools. ==== Other ==== * [[https://stm32-base.org| STM32-base]] isn't directed at people using Arduino for STM32 development, but there is still a lot of good information there. * [[https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill|STM32-base Blue Pill page]] * [[https://stm32-base.org/boards/STM32F103C8T6-RobotDyn-Black-Pill|STM32-base RobotDyn Black Pill page]]