That is the ‘Arduino Core STM32’.
(In the Arduino IDE it has been given a different name to confuse people even more. I really don’t understand the lack of naming consistency and why they make things so confusing.)
You normally should be able to use MCCI LoRaWAN LMIC library.
There appear to be some timing issues with STM32 in combination with LMIC (both classic and MCCI) but I am not aware of the exact cause and if this has been fixed in MCCI LMIC already. It is fixed in MCCI LMIC for the ST L072Z-LRWAN1 Discovery kit board but only specific for that board (in a board definition file included with MCCI LMIC library). I am not sure how it will behave with other STM32 boards (e.g. bluepill).
As a workaround, for testing purposes I currently use the classic LMIC Arduino library. This library is no longer maintained and does not include the enhancements added to MCCI’s version but at least appears to work properly with both uplink and downlink messages (and hence also works with OTAA). But requires the following:
I use the following workaround to fix the timing issue experienced with downlinks (I determined this workaround empirically):
#define LMIC_CLOCK_ERROR_PERCENTAGE 1
LMIC_setClockError(LMIC_CLOCK_ERROR_PERCENTAGE * (MAX_CLOCK_ERROR / 100));
See the following start topic for Big LoRa32u4 boards topic for where to place above lines in the code.
When using this workaround with MCCI LMIC I ran into certain issues that I have not yet further investigated.