I need to do some more advanced PWM on the Photon than the analog_write() function allows. I get an “undefined reference” linker error when trying to call any of the functions in the stm32f2xx_tim library. Simple example:
I thought there might be an issue calling a C function from C++, but both the header file and code for this library is wrapped in #ifdef __cplusplus extern "C" { }
I tried wrapping the TIM_Cmd call in #if (PLATFORM_ID == 6) in case the build tools were trying to compile this for Core not just Photon and there is incompatibility, but I got the same error.
The platform library isn’t available presently in the WebIDE. It will be available after the 0.4.2 release. In the meantime, you can use the local build to get access to that library.
Also please let us know what advanced functionality you are wanting to code, there may already be a library for that, or it could be something we add to the system firmware.
I ran into a similar problem DAC_Init, DAC_Cmd, etc. When I list ../firmware/platform/MCU/STM32F2xx/STM32_StdPeriph_Driver/src/*.c (from the firmware repo) after the source file in the particle flash ... command it compiles w/o warning/error. However, I feel like that’s probably not what I’m supposed to be doing.
That’s actually not as bad as you might think! The local build is essentially doing the same thing - making the source files available the application. And it’s working for you, right?! so if it ain’t broke don’t fix it