Bluepill STM32F103C8 support for Mbed OS 6

Bluepill board support for Mbed OS 6

Warning

It does not work with the Mbed Online Compiler.

This is an example of configuration for the Bluepill board for Mbed OS 6.

It shows how to create a custom board support based on Mbed OS and how to compile a simple Blinky application.

Note this project makes use of the full Mbed OS with RTOS included. It's possible to make changes in the configuration to support the Baremetal profile and reduce memory requirements - see this.

Example application

This repository includes blinky.cpp as an example application to demonstrate how to use the Bluepill custom board support. It's expected to work out of the box using both Mbed CLI and Mbed Studio. Note this test application can be ignored using the MBED_BLINKY_EXAMPLE macro in mbed_app.json, so you can add your own files and application on top of this project.

You can follow these steps to import and compile with Mbed CLI:

mbed import https://os.mbed.com/users/hudakz/code/mbed-os-bluepill
mbed compile -t GCC_ARM -m bluepill

Bluepill and Mbed OS version support

BluepillMbed OS (hash)Status
preview6.2.0 (#a2ada74770 )Compiles and runs ok

Updating Mbed OS

Note not every version of Mbed OS is being tested, therefore update at your own risk. Unless strictly required, you should stick to versions of Mbed OS that are known to work ok.

If you do want to udpate Mbed OS, then follow these steps:

cd mbed-os
mbed update <mbed-os hash / tag>

Testing

This application has been tested on the Bluepill board and runs ok: it blinks and LED and sends a message over the serial port (115200 bauds - see mbed_app.json).

However, it's recomended to run regression tests based on the Greentea framework whether possible (more details to be added).

Programming with STLink programming utility

The Bluepill board doesn't have a programming interface on board. However, it's easy to connect an external adapter such as the STLink/V2 and get it working in minutes.

Use the STM32 ST-Link utility to program the binary into the device.

https://os.mbed.com/media/uploads/hudakz/stlink-prog.png

Wire the Bluepill to the STLink and serial adapter as follow:

BluepillSTLink (20-pin JTAG)Serial adapter
SDWIO (CN4)7-
SWCLK (CN4)9-
RESET15-
GND4GND
TX (PA_2)-RX
RX (PA_3)-TX

ST-LINK/V2 JTAG pintout
https://os.mbed.com/media/uploads/hudakz/jtag_pinout.png

This is the pinout of the Bluepill board: /media/uploads/hudakz/stm32f103c8t6_pinout_voltage01.png

https://os.mbed.com/media/uploads/hudakz/connections.jpg

Additional example programs

Bare metal on Bluepill
Bare metal with EventQueue on Bluepill

Warning

The examples above are not meant to be compiled with the online compiler. Follow these steps to import and compile them with Mbed CLI:

mbed import Program's_URL
mbed compile -t GCC_ARM -m bluepill

Known issues

  • Please check the issues reported.
Committer:
hudakz
Date:
Fri Jan 08 22:21:27 2021 +0000
Revision:
10:fc04048e7188
Parent:
0:2577a4fb6e72
Added USB support.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:2577a4fb6e72 1 Apache License
hudakz 0:2577a4fb6e72 2 Version 2.0, January 2004
hudakz 0:2577a4fb6e72 3 http://www.apache.org/licenses/
hudakz 0:2577a4fb6e72 4
hudakz 0:2577a4fb6e72 5 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
hudakz 0:2577a4fb6e72 6
hudakz 0:2577a4fb6e72 7 1. Definitions.
hudakz 0:2577a4fb6e72 8
hudakz 0:2577a4fb6e72 9 "License" shall mean the terms and conditions for use, reproduction,
hudakz 0:2577a4fb6e72 10 and distribution as defined by Sections 1 through 9 of this document.
hudakz 0:2577a4fb6e72 11
hudakz 0:2577a4fb6e72 12 "Licensor" shall mean the copyright owner or entity authorized by
hudakz 0:2577a4fb6e72 13 the copyright owner that is granting the License.
hudakz 0:2577a4fb6e72 14
hudakz 0:2577a4fb6e72 15 "Legal Entity" shall mean the union of the acting entity and all
hudakz 0:2577a4fb6e72 16 other entities that control, are controlled by, or are under common
hudakz 0:2577a4fb6e72 17 control with that entity. For the purposes of this definition,
hudakz 0:2577a4fb6e72 18 "control" means (i) the power, direct or indirect, to cause the
hudakz 0:2577a4fb6e72 19 direction or management of such entity, whether by contract or
hudakz 0:2577a4fb6e72 20 otherwise, or (ii) ownership of fifty percent (50%) or more of the
hudakz 0:2577a4fb6e72 21 outstanding shares, or (iii) beneficial ownership of such entity.
hudakz 0:2577a4fb6e72 22
hudakz 0:2577a4fb6e72 23 "You" (or "Your") shall mean an individual or Legal Entity
hudakz 0:2577a4fb6e72 24 exercising permissions granted by this License.
hudakz 0:2577a4fb6e72 25
hudakz 0:2577a4fb6e72 26 "Source" form shall mean the preferred form for making modifications,
hudakz 0:2577a4fb6e72 27 including but not limited to software source code, documentation
hudakz 0:2577a4fb6e72 28 source, and configuration files.
hudakz 0:2577a4fb6e72 29
hudakz 0:2577a4fb6e72 30 "Object" form shall mean any form resulting from mechanical
hudakz 0:2577a4fb6e72 31 transformation or translation of a Source form, including but
hudakz 0:2577a4fb6e72 32 not limited to compiled object code, generated documentation,
hudakz 0:2577a4fb6e72 33 and conversions to other media types.
hudakz 0:2577a4fb6e72 34
hudakz 0:2577a4fb6e72 35 "Work" shall mean the work of authorship, whether in Source or
hudakz 0:2577a4fb6e72 36 Object form, made available under the License, as indicated by a
hudakz 0:2577a4fb6e72 37 copyright notice that is included in or attached to the work
hudakz 0:2577a4fb6e72 38 (an example is provided in the Appendix below).
hudakz 0:2577a4fb6e72 39
hudakz 0:2577a4fb6e72 40 "Derivative Works" shall mean any work, whether in Source or Object
hudakz 0:2577a4fb6e72 41 form, that is based on (or derived from) the Work and for which the
hudakz 0:2577a4fb6e72 42 editorial revisions, annotations, elaborations, or other modifications
hudakz 0:2577a4fb6e72 43 represent, as a whole, an original work of authorship. For the purposes
hudakz 0:2577a4fb6e72 44 of this License, Derivative Works shall not include works that remain
hudakz 0:2577a4fb6e72 45 separable from, or merely link (or bind by name) to the interfaces of,
hudakz 0:2577a4fb6e72 46 the Work and Derivative Works thereof.
hudakz 0:2577a4fb6e72 47
hudakz 0:2577a4fb6e72 48 "Contribution" shall mean any work of authorship, including
hudakz 0:2577a4fb6e72 49 the original version of the Work and any modifications or additions
hudakz 0:2577a4fb6e72 50 to that Work or Derivative Works thereof, that is intentionally
hudakz 0:2577a4fb6e72 51 submitted to Licensor for inclusion in the Work by the copyright owner
hudakz 0:2577a4fb6e72 52 or by an individual or Legal Entity authorized to submit on behalf of
hudakz 0:2577a4fb6e72 53 the copyright owner. For the purposes of this definition, "submitted"
hudakz 0:2577a4fb6e72 54 means any form of electronic, verbal, or written communication sent
hudakz 0:2577a4fb6e72 55 to the Licensor or its representatives, including but not limited to
hudakz 0:2577a4fb6e72 56 communication on electronic mailing lists, source code control systems,
hudakz 0:2577a4fb6e72 57 and issue tracking systems that are managed by, or on behalf of, the
hudakz 0:2577a4fb6e72 58 Licensor for the purpose of discussing and improving the Work, but
hudakz 0:2577a4fb6e72 59 excluding communication that is conspicuously marked or otherwise
hudakz 0:2577a4fb6e72 60 designated in writing by the copyright owner as "Not a Contribution."
hudakz 0:2577a4fb6e72 61
hudakz 0:2577a4fb6e72 62 "Contributor" shall mean Licensor and any individual or Legal Entity
hudakz 0:2577a4fb6e72 63 on behalf of whom a Contribution has been received by Licensor and
hudakz 0:2577a4fb6e72 64 subsequently incorporated within the Work.
hudakz 0:2577a4fb6e72 65
hudakz 0:2577a4fb6e72 66 2. Grant of Copyright License. Subject to the terms and conditions of
hudakz 0:2577a4fb6e72 67 this License, each Contributor hereby grants to You a perpetual,
hudakz 0:2577a4fb6e72 68 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
hudakz 0:2577a4fb6e72 69 copyright license to reproduce, prepare Derivative Works of,
hudakz 0:2577a4fb6e72 70 publicly display, publicly perform, sublicense, and distribute the
hudakz 0:2577a4fb6e72 71 Work and such Derivative Works in Source or Object form.
hudakz 0:2577a4fb6e72 72
hudakz 0:2577a4fb6e72 73 3. Grant of Patent License. Subject to the terms and conditions of
hudakz 0:2577a4fb6e72 74 this License, each Contributor hereby grants to You a perpetual,
hudakz 0:2577a4fb6e72 75 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
hudakz 0:2577a4fb6e72 76 (except as stated in this section) patent license to make, have made,
hudakz 0:2577a4fb6e72 77 use, offer to sell, sell, import, and otherwise transfer the Work,
hudakz 0:2577a4fb6e72 78 where such license applies only to those patent claims licensable
hudakz 0:2577a4fb6e72 79 by such Contributor that are necessarily infringed by their
hudakz 0:2577a4fb6e72 80 Contribution(s) alone or by combination of their Contribution(s)
hudakz 0:2577a4fb6e72 81 with the Work to which such Contribution(s) was submitted. If You
hudakz 0:2577a4fb6e72 82 institute patent litigation against any entity (including a
hudakz 0:2577a4fb6e72 83 cross-claim or counterclaim in a lawsuit) alleging that the Work
hudakz 0:2577a4fb6e72 84 or a Contribution incorporated within the Work constitutes direct
hudakz 0:2577a4fb6e72 85 or contributory patent infringement, then any patent licenses
hudakz 0:2577a4fb6e72 86 granted to You under this License for that Work shall terminate
hudakz 0:2577a4fb6e72 87 as of the date such litigation is filed.
hudakz 0:2577a4fb6e72 88
hudakz 0:2577a4fb6e72 89 4. Redistribution. You may reproduce and distribute copies of the
hudakz 0:2577a4fb6e72 90 Work or Derivative Works thereof in any medium, with or without
hudakz 0:2577a4fb6e72 91 modifications, and in Source or Object form, provided that You
hudakz 0:2577a4fb6e72 92 meet the following conditions:
hudakz 0:2577a4fb6e72 93
hudakz 0:2577a4fb6e72 94 (a) You must give any other recipients of the Work or
hudakz 0:2577a4fb6e72 95 Derivative Works a copy of this License; and
hudakz 0:2577a4fb6e72 96
hudakz 0:2577a4fb6e72 97 (b) You must cause any modified files to carry prominent notices
hudakz 0:2577a4fb6e72 98 stating that You changed the files; and
hudakz 0:2577a4fb6e72 99
hudakz 0:2577a4fb6e72 100 (c) You must retain, in the Source form of any Derivative Works
hudakz 0:2577a4fb6e72 101 that You distribute, all copyright, patent, trademark, and
hudakz 0:2577a4fb6e72 102 attribution notices from the Source form of the Work,
hudakz 0:2577a4fb6e72 103 excluding those notices that do not pertain to any part of
hudakz 0:2577a4fb6e72 104 the Derivative Works; and
hudakz 0:2577a4fb6e72 105
hudakz 0:2577a4fb6e72 106 (d) If the Work includes a "NOTICE" text file as part of its
hudakz 0:2577a4fb6e72 107 distribution, then any Derivative Works that You distribute must
hudakz 0:2577a4fb6e72 108 include a readable copy of the attribution notices contained
hudakz 0:2577a4fb6e72 109 within such NOTICE file, excluding those notices that do not
hudakz 0:2577a4fb6e72 110 pertain to any part of the Derivative Works, in at least one
hudakz 0:2577a4fb6e72 111 of the following places: within a NOTICE text file distributed
hudakz 0:2577a4fb6e72 112 as part of the Derivative Works; within the Source form or
hudakz 0:2577a4fb6e72 113 documentation, if provided along with the Derivative Works; or,
hudakz 0:2577a4fb6e72 114 within a display generated by the Derivative Works, if and
hudakz 0:2577a4fb6e72 115 wherever such third-party notices normally appear. The contents
hudakz 0:2577a4fb6e72 116 of the NOTICE file are for informational purposes only and
hudakz 0:2577a4fb6e72 117 do not modify the License. You may add Your own attribution
hudakz 0:2577a4fb6e72 118 notices within Derivative Works that You distribute, alongside
hudakz 0:2577a4fb6e72 119 or as an addendum to the NOTICE text from the Work, provided
hudakz 0:2577a4fb6e72 120 that such additional attribution notices cannot be construed
hudakz 0:2577a4fb6e72 121 as modifying the License.
hudakz 0:2577a4fb6e72 122
hudakz 0:2577a4fb6e72 123 You may add Your own copyright statement to Your modifications and
hudakz 0:2577a4fb6e72 124 may provide additional or different license terms and conditions
hudakz 0:2577a4fb6e72 125 for use, reproduction, or distribution of Your modifications, or
hudakz 0:2577a4fb6e72 126 for any such Derivative Works as a whole, provided Your use,
hudakz 0:2577a4fb6e72 127 reproduction, and distribution of the Work otherwise complies with
hudakz 0:2577a4fb6e72 128 the conditions stated in this License.
hudakz 0:2577a4fb6e72 129
hudakz 0:2577a4fb6e72 130 5. Submission of Contributions. Unless You explicitly state otherwise,
hudakz 0:2577a4fb6e72 131 any Contribution intentionally submitted for inclusion in the Work
hudakz 0:2577a4fb6e72 132 by You to the Licensor shall be under the terms and conditions of
hudakz 0:2577a4fb6e72 133 this License, without any additional terms or conditions.
hudakz 0:2577a4fb6e72 134 Notwithstanding the above, nothing herein shall supersede or modify
hudakz 0:2577a4fb6e72 135 the terms of any separate license agreement you may have executed
hudakz 0:2577a4fb6e72 136 with Licensor regarding such Contributions.
hudakz 0:2577a4fb6e72 137
hudakz 0:2577a4fb6e72 138 6. Trademarks. This License does not grant permission to use the trade
hudakz 0:2577a4fb6e72 139 names, trademarks, service marks, or product names of the Licensor,
hudakz 0:2577a4fb6e72 140 except as required for reasonable and customary use in describing the
hudakz 0:2577a4fb6e72 141 origin of the Work and reproducing the content of the NOTICE file.
hudakz 0:2577a4fb6e72 142
hudakz 0:2577a4fb6e72 143 7. Disclaimer of Warranty. Unless required by applicable law or
hudakz 0:2577a4fb6e72 144 agreed to in writing, Licensor provides the Work (and each
hudakz 0:2577a4fb6e72 145 Contributor provides its Contributions) on an "AS IS" BASIS,
hudakz 0:2577a4fb6e72 146 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
hudakz 0:2577a4fb6e72 147 implied, including, without limitation, any warranties or conditions
hudakz 0:2577a4fb6e72 148 of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
hudakz 0:2577a4fb6e72 149 PARTICULAR PURPOSE. You are solely responsible for determining the
hudakz 0:2577a4fb6e72 150 appropriateness of using or redistributing the Work and assume any
hudakz 0:2577a4fb6e72 151 risks associated with Your exercise of permissions under this License.
hudakz 0:2577a4fb6e72 152
hudakz 0:2577a4fb6e72 153 8. Limitation of Liability. In no event and under no legal theory,
hudakz 0:2577a4fb6e72 154 whether in tort (including negligence), contract, or otherwise,
hudakz 0:2577a4fb6e72 155 unless required by applicable law (such as deliberate and grossly
hudakz 0:2577a4fb6e72 156 negligent acts) or agreed to in writing, shall any Contributor be
hudakz 0:2577a4fb6e72 157 liable to You for damages, including any direct, indirect, special,
hudakz 0:2577a4fb6e72 158 incidental, or consequential damages of any character arising as a
hudakz 0:2577a4fb6e72 159 result of this License or out of the use or inability to use the
hudakz 0:2577a4fb6e72 160 Work (including but not limited to damages for loss of goodwill,
hudakz 0:2577a4fb6e72 161 work stoppage, computer failure or malfunction, or any and all
hudakz 0:2577a4fb6e72 162 other commercial damages or losses), even if such Contributor
hudakz 0:2577a4fb6e72 163 has been advised of the possibility of such damages.
hudakz 0:2577a4fb6e72 164
hudakz 0:2577a4fb6e72 165 9. Accepting Warranty or Additional Liability. While redistributing
hudakz 0:2577a4fb6e72 166 the Work or Derivative Works thereof, You may choose to offer,
hudakz 0:2577a4fb6e72 167 and charge a fee for, acceptance of support, warranty, indemnity,
hudakz 0:2577a4fb6e72 168 or other liability obligations and/or rights consistent with this
hudakz 0:2577a4fb6e72 169 License. However, in accepting such obligations, You may act only
hudakz 0:2577a4fb6e72 170 on Your own behalf and on Your sole responsibility, not on behalf
hudakz 0:2577a4fb6e72 171 of any other Contributor, and only if You agree to indemnify,
hudakz 0:2577a4fb6e72 172 defend, and hold each Contributor harmless for any liability
hudakz 0:2577a4fb6e72 173 incurred by, or claims asserted against, such Contributor by reason
hudakz 0:2577a4fb6e72 174 of your accepting any such warranty or additional liability.
hudakz 0:2577a4fb6e72 175
hudakz 0:2577a4fb6e72 176 END OF TERMS AND CONDITIONS
hudakz 0:2577a4fb6e72 177
hudakz 0:2577a4fb6e72 178 APPENDIX: How to apply the Apache License to your work.
hudakz 0:2577a4fb6e72 179
hudakz 0:2577a4fb6e72 180 To apply the Apache License to your work, attach the following
hudakz 0:2577a4fb6e72 181 boilerplate notice, with the fields enclosed by brackets "[]"
hudakz 0:2577a4fb6e72 182 replaced with your own identifying information. (Don't include
hudakz 0:2577a4fb6e72 183 the brackets!) The text should be enclosed in the appropriate
hudakz 0:2577a4fb6e72 184 comment syntax for the file format. We also recommend that a
hudakz 0:2577a4fb6e72 185 file or class name and description of purpose be included on the
hudakz 0:2577a4fb6e72 186 same "printed page" as the copyright notice for easier
hudakz 0:2577a4fb6e72 187 identification within third-party archives.
hudakz 0:2577a4fb6e72 188
hudakz 0:2577a4fb6e72 189 Copyright [yyyy] [name of copyright owner]
hudakz 0:2577a4fb6e72 190
hudakz 0:2577a4fb6e72 191 Licensed under the Apache License, Version 2.0 (the "License");
hudakz 0:2577a4fb6e72 192 you may not use this file except in compliance with the License.
hudakz 0:2577a4fb6e72 193 You may obtain a copy of the License at
hudakz 0:2577a4fb6e72 194
hudakz 0:2577a4fb6e72 195 http://www.apache.org/licenses/LICENSE-2.0
hudakz 0:2577a4fb6e72 196
hudakz 0:2577a4fb6e72 197 Unless required by applicable law or agreed to in writing, software
hudakz 0:2577a4fb6e72 198 distributed under the License is distributed on an "AS IS" BASIS,
hudakz 0:2577a4fb6e72 199 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
hudakz 0:2577a4fb6e72 200 See the License for the specific language governing permissions and
hudakz 0:2577a4fb6e72 201 limitations under the License.