BluePill

From SolaceWiki
Revision as of 16:10, 5 November 2023 by Kc (talk | contribs)
Jump to navigation Jump to search

The BluePill is an inexpensive Arduino style microcontroller board built around the STMicroelectronics ARM Cortex-M3 STM32F103CT6 microcontroller.


The 32-bit microcontroller runs at 72MHz, has 20k of RAM, 128k of flash, and a shitload of GPIO pins. At around $5 each, it's basically superior to all the Arduino options, at a fraction of the price.


VBAT can accept from 3 - 5VDC.

3V3 pins can alternatively be used to power the chip directly.

VBAT is not connected directly to USB P+. Do not power it from one of the pins and from the USB port at the same time.


To flash:

The USB port is basically useless.

- Connect a TTL-Serial adapter connected to UART1 (Pins PA9 & PA10 above, A9 A10 on the silkscreen).

- Set the "boot" jumper (top) to 1 (rightmost position).

- Press the [RESET] button

- Start your upload

The program will execute immediately upon uploading, but not upon reset until you set the "boot" jumper back to 0.


PlatformIO Configuration:

platform: ststm32; board: bluepill_f103c8; framework: arduino


platformio.ini settings using arduino framework and TTL Serial Upload:

[env:bluepill_f103c8]

platform = ststm32

board = bluepill_f103c8

framework = arduino

upload_protocol = serial

upload_port = /dev/ttyUSB0 # correct as needed



Analog (0-3.3v) measurement:

The 10 analog input pins are 12-bit resolution.

Analog inputs: PA0 - PA7, PB0, PB1


PWM Output:

There are 15 PWM pins total.

PA0 - PA3, PA6 - PA10, PB0 - PB1, PB6 - PB9


!! First set the PWM settings for the chip in your setup():

analogWriteResolution(8); # of bits of PWM resolution, max 16 bits

analogWriteFrequency(1000); # PWM frequency in Hz, max unknown


Then you can use analogWrite(PIN, VALUE) as per usual.

N.B.: If you want to drive a PWM output from an analog reading, you can just set the analogWriteResolution to 12 and then you don't have to map the values!


Misc:

The user-definable LED on the board is sink-ground through PC13. Set PC13 LOW to turn it on. Note: PC13 is not a PWM output.