Let me start by saying it could be my lack of search abilities.
I could find no mapping of pins anywhere I looked between what the Arduino IDE would accept and the pin [name/number] on the "blue pill".
If this is helpful for others, it was worth the time I took this morning to do this.
I modified the blink sketch a small amount to set a pattern of flashes so there would be no mistake on what I was seeing.
/*
Modified Blink for "Blue Pill" STM32F103C8T6
Turns an LED on in a set pattern, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6.
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
modified 29 Sep 2019
by Charlie Raynor
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Blink
*/
/*
Sketch is modified "blink" in the examples folder of the IDE.
All pins responded to digitalWrite, Look at the datasheet for which pins are ADC and
DAC,and how to set them up for that.
I changed the led pin number starting with 2, progressing all the way to 31,the total
number of accessible GPIO pins on the blue pill. As with all MCU chips, most have special
purposes, outlined in the datasheet.
*/
int ledPin = 31;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode (ledPin, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level)
delay(150); // wait for a second
digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW
delay(100); // wait for a second
digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level)
delay(300); // wait for a second
digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW
delay(100); // wait for a second
digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level)
delay(150); // wait for a second
digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
The pin mapping that I came up with:
Arduino pin 2 = B7
Arduino pin 3 = B6
Arduino pin 4 = B5
Arduino pin 5 = B4
Arduino pin 6 = B3
Arduino pin 7 = A15
Arduino pin 8 = A12
Arduino pin 9 = A11
Arduino pin 10 = A10
Arduino pin 11 = A9
Arduino pin 12 = A8
Arduino pin 13 = B15
Arduino pin 14 = B14
Arduino pin 15 = B13
Arduino pin 16 = null
Arduino pin 17 = C13, onboard led, input only.
Arduino pin 18 = C14
Arduino pin 19 = C15
Arduino pin 20 = A0
Arduino pin 21 = A1
Arduino pin 22 = A2
Arduino pin 23 = A3
Arduino pin 24 = A4
Arduino pin 25 = A5
Arduino pin 26 = A6
Arduino pin 27 = A7
Arduino pin 28 = B0
Arduino pin 29 = B1
Arduino pin 30 = B10
Arduino pin 31 = B11
Note that according to the datasheet, pin C13 (PC13) is the tamper-RTC pin and as such is low current input. The pattern set by the sketch is reversed. See notes 5 and 6 in the Pinouts and pin description of the datasheet.
Also note that Arduino pin 17 returned NO pin associated with it on the blue pill, and blue pill pin B12 is absent from the listing.