Ok, so I can stay with Roger's core + RadioHead for F104C8 for now. ST-LINK reads that I have 128k Flash, even though it's C8

Can I use all 128k memory? If so, I have the perfect platform for my project.
The second option is to use RadioLib + Official Core. I was looking for a solution in the forum and jgromes wrote about it. I checked and examples are compiling for the Official Core for F103C8 and even F401CC which I am waiting for delivery. I just need to learn RadioLib, a new library for me, and I hope it will work with RadioHead;) I have to check all the possibilities and the combination.
I am very excited about STM32 after switching from AVR. This is very evident when using OLED. For AVR this was a challenge, not enough Ram for frame buffering when the program was large, not too fast refresh. STM32 does the same with such lightness, I have to slow down the animation very much

In addition, Ram is a lot, I don't even optimize variables;) (I know I should).
stas2z thanks for your help.
--------------------------------------------- EDIT ----------------------------------------
I tested the configuration: blue pill F104C8 + Official Core + RadioLib. The sketch compiles correctly, but the processor "stops" on the command
int state = lora.begin (); My next command is
digitalWrite (PC13, LOW); and it's never done.
I made another test: Arduino Pro Mini (AVR processor) + RadioLib + sample sketch. I did not connect the RFM95 radio, Arduino itself. The program returned error -2 no radio. It should be. Test passed.
Then I just connected the blue pill, no radio, the same sketch as above. Again, the program stops at
int state = lora.begin (); 
Returns no error via serial port, silence ... Test failed.
This is the sketch from the examples a bit modified by me. The last thing I see via serial port is:
[SX1278] Initializing GO !!
Code: Select all
/*
RadioLib SX127x Receive with Interrupts Example
This example listens for LoRa transmissions and tries to
receive them. Once a packet is received, an interrupt is
triggered. To successfully receive data, the following
settings have to be the same on both transmitter
and receiver:
- carrier frequency
- bandwidth
- spreading factor
- coding rate
- sync word
Other modules from SX127x/RFM9x family can also be used.
For full API reference, see the GitHub Pages
https://jgromes.github.io/RadioLib/
*/
// include the library
#include <RadioLib.h>
// SX1278 has the following connections:
// NSS pin: 10
// DIO0 pin: 2
// RESET pin: 9
// DIO1 pin: 3
SX1278 lora = new Module(PA0, PA1, PA2, PA3);
// or using RadioShield
// https://github.com/jgromes/RadioShield
//SX1278 lora = RadioShield.ModuleA;
void setup() {
Serial.begin(9600);
pinMode(PC13, OUTPUT);
// initialize SX1278 with default settings
Serial.print(F("[SX1278] Initializing ... "));
// carrier frequency: 434.0 MHz
// bandwidth: 125.0 kHz
// spreading factor: 9
// coding rate: 7
// sync word: 0x12
// output power: 17 dBm
// current limit: 100 mA
// preamble length: 8 symbols
// amplifier gain: 0 (automatic gain control)
digitalWrite(PC13, LOW);
Serial.println(F("[SX1278] Initializing 3 "));
delay(1000); digitalWrite(PC13, HIGH);
Serial.println(F("[SX1278] Initializing 2 "));
delay(1000); digitalWrite(PC13, LOW);
Serial.println(F("[SX1278] Initializing 1 "));
delay(1000); digitalWrite(PC13, HIGH);
Serial.println(F("[SX1278] Initializing GO!! "));
int state = lora.begin();
digitalWrite(PC13, LOW);
if (state == ERR_NONE) {
Serial.println(F("success!"));
} else {
Serial.print(F("failed, code "));
Serial.println(state);
while (true);
}
digitalWrite(PC13, LOW);
// set the function that will be called
// when new packet is received
lora.setDio0Action(setFlag);
// start listening for LoRa packets
Serial.print(F("[SX1278] Starting to listen ... "));
state = lora.startReceive();
if (state == ERR_NONE) {
Serial.println(F("success!"));
} else {
Serial.print(F("failed, code "));
Serial.println(state);
while (true);
}
// if needed, 'listen' mode can be disabled by calling
// any of the following methods:
//
// lora.standby()
// lora.sleep()
// lora.transmit();
// lora.receive();
// lora.readData();
// lora.scanChannel();
}
// flag to indicate that a packet was received
volatile bool receivedFlag = false;
// disable interrupt when it's not needed
volatile bool enableInterrupt = true;
// this function is called when a complete packet
// is received by the module
// IMPORTANT: this function MUST be 'void' type
// and MUST NOT have any arguments!
void setFlag(void) {
// check if the interrupt is enabled
if(!enableInterrupt) {
return;
}
// we got a packet, set the flag
receivedFlag = true;
}
void loop() {
// check if the flag is set
if(receivedFlag) {
// disable the interrupt service routine while
// processing the data
enableInterrupt = false;
// reset flag
receivedFlag = false;
// you can read received data as an Arduino String
String str;
int state = lora.readData(str);
// you can also read received data as byte array
/*
byte byteArr[8];
int state = lora.readData(byteArr, 8);
*/
if (state == ERR_NONE) {
// packet was successfully received
Serial.println(F("[SX1278] Received packet!"));
// print data of the packet
Serial.print(F("[SX1278] Data:\t\t"));
Serial.println(str);
// print RSSI (Received Signal Strength Indicator)
Serial.print(F("[SX1278] RSSI:\t\t"));
Serial.print(lora.getRSSI());
Serial.println(F(" dBm"));
// print SNR (Signal-to-Noise Ratio)
Serial.print(F("[SX1278] SNR:\t\t"));
Serial.print(lora.getSNR());
Serial.println(F(" dB"));
// print frequency error
Serial.print(F("[SX1278] Frequency error:\t"));
Serial.print(lora.getFrequencyError());
Serial.println(F(" Hz"));
} else if (state == ERR_CRC_MISMATCH) {
// packet was received, but is malformed
Serial.println(F("[SX1278] CRC error!"));
} else {
// some other error occurred
Serial.print(F("[SX1278] Failed, code "));
Serial.println(state);
}
// put module back to listen mode
lora.startReceive();
// we're ready to receive more packets,
// enable interrupt service routine
enableInterrupt = true;
}
}
I probably make a basic mistake, but I couldn't find the code example for my blue pill.
If anyone has time to look at this, thank you in advance.