When i try to compile empty code for stm8s103f3p6 i get an error saying that it can’t find intrinsics.h dependency and unsupported compiler, i opened an empty project for arduino uno instead and it compiled without any errors or warnings, i’m not sure what’s the problem
Full platformio.ini
?
The STM8 Arduino implementation is written in C for SDCC, since that platform has no C++ compiler. (Also noted in Build fails with "unsupported compiler"/"intrinsics.h" · Issue #4 · platformio/platform-ststm8 · GitHub).Thus you must rename main.cpp
to main.c
.
Also, the setup()
and loop()
functions must not be empty, otherwise this will trigger an SDCC linker error. (noted in New Project Buid Failed even after main.ccp -> main.c · Issue #21 · platformio/platform-ststm8 · GitHub). It seems that especially a call to delay()
must be made at one point.
It’s best to follow the example projects at platform-ststm8/examples at develop · platformio/platform-ststm8 · GitHub for this case.
Example code
#include <Arduino.h>
#define LED_PIN 0 /* corresponds to PA1 */
/* see https://github.com/tenbaht/sduino/blob/0ce7e4c381028f6472eb29e8459210cee90b937d/sduino/stm8/variants/standard/pins_arduino.h#L41-L58*/
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(1000);
digitalWrite(LED_PIN, LOW);
delay(1000);
}
I get 3 warnings, but now it compiles successfully
thanks
Hi Folks, to remove/move the warnings i had to add build flags to platformio.ini file (while using sdcc for my stm8s103xx board).
build_flags =
-D __SDCC
-I /home//.platformio/packages/toolchain-sdcc/share/sdcc/include
__SDCC is optional because and i would actually comment out the #include <intrinsics.h>, but that is not a portable solution so… pick your poison OK so why…
Because my stm8.h had a #include <intrinsics.h> inside this was causing a squiggly warning. This squiggly was for another compiler (IAR) so why you ask did it effect my sdcc build? Because __SDCC is defined by and when the compiler runs, you now of course get a warning “__SDCC redefined” in your build output, or if your never going to use IAR for your stm8, just comment #include <intrinsics.h> out of stm8s.h and leave a comment as to why.
I also needed to -Idir the include path for my sdcc compiler, using “quick fix” added paths to the wrong place e.g. “/c++/9/…”
see, Redirecting...