Hi,
I’m trying to make timer interrupts by using the SparkIntervalTimer library found on the cloud. My code looks like this:
// This #include statement was automatically added by the Particle IDE.
#include "SparkIntervalTimer/SparkIntervalTimer.h"
IntervalTimer myTimer;
void blink(void);
void setup() {
myTimer.begin(blink, 5000, hmSec);
}
void blink(void) {
Spark.publish("hello", "5");
}
void loop() {
}
And I am getting these compilation errors:
SparkIntervalTimer/SparkIntervalTimer.cpp: In member function 'void IntervalTimer::start_SIT(uint16_t, bool)':
SparkIntervalTimer/SparkIntervalTimer.cpp:178:10: warning: statement has no effect [-Wunused-value]
scale == uSec; // Default to microseconds
^
SparkIntervalTimer/SparkIntervalTimer.cpp: In member function 'void IntervalTimer::interrupt_SIT(action)':
SparkIntervalTimer/SparkIntervalTimer.cpp:261:15: warning: variable 'TIMx' set but not used [-Wunused-but-set-variable]
TIM_TypeDef* TIMx;
^
SparkIntervalTimer/SparkIntervalTimer.cpp: In member function 'void IntervalTimer::resetPeriod_SIT(uint16_t, bool)':
SparkIntervalTimer/SparkIntervalTimer.cpp:305:26: warning: unused variable 'timerInitStructure' [-Wunused-variable]
TIM_TimeBaseInitTypeDef timerInitStructure;
^
SparkIntervalTimer/SparkIntervalTimer.cpp: In member function 'void IntervalTimer::start_SIT(uint16_t, bool)':
SparkIntervalTimer/SparkIntervalTimer.cpp:191:43: warning: 'TIMx' may be used uninitialized in this function [-Wmaybe-uninitialized]
TIM_ITConfig(TIMx, TIM_IT_Update, ENABLE);
^
SparkIntervalTimer/SparkIntervalTimer.cpp: In member function 'void IntervalTimer::stop_SIT()':
SparkIntervalTimer/SparkIntervalTimer.cpp:247:18: warning: 'TIMx' may be used uninitialized in this function [-Wmaybe-uninitialized]
TIM_DeInit(TIMx);
^
SparkIntervalTimer/SparkIntervalTimer.cpp: In member function 'void IntervalTimer::resetPeriod_SIT(uint16_t, bool)':
SparkIntervalTimer/SparkIntervalTimer.cpp:336:23: warning: 'TIMx' may be used uninitialized in this function [-Wmaybe-uninitialized]
TIMx->PSC = prescaler;
^
../../../build/target/user/platform-6/libuser.a(particle-ktbox.o): In function `__static_initialization_and_destruction_0':
particle-ktbox.cpp:4: undefined reference to `SystemCoreClock'
particle-ktbox.cpp:4: undefined reference to `Wiring_TIM2_Interrupt_Handler'
particle-ktbox.cpp:4: undefined reference to `Wiring_TIM3_Interrupt_Handler'
particle-ktbox.cpp:4: undefined reference to `Wiring_TIM4_Interrupt_Handler'
../../../build/target/user/platform-6/libuser.a(SparkIntervalTimer.o): In function `Wiring_TIM2_Interrupt_Handler_override':
SparkIntervalTimer/SparkIntervalTimer.cpp:37: undefined reference to `TIM_GetITStatus'
SparkIntervalTimer/SparkIntervalTimer.cpp:39: undefined reference to `TIM_ClearITPendingBit'
../../../build/target/user/platform-6/libuser.a(SparkIntervalTimer.o): In function `Wiring_TIM3_Interrupt_Handler_override':
SparkIntervalTimer/SparkIntervalTimer.cpp:47: undefined reference to `TIM_GetITStatus'
SparkIntervalTimer/SparkIntervalTimer.cpp:49: undefined reference to `TIM_ClearITPendingBit'
../../../build/target/user/platform-6/libuser.a(SparkIntervalTimer.o): In function `Wiring_TIM4_Interrupt_Handler_override':
SparkIntervalTimer/SparkIntervalTimer.cpp:57: undefined reference to `TIM_GetITStatus'
SparkIntervalTimer/SparkIntervalTimer.cpp:59: undefined reference to `TIM_ClearITPendingBit'
../../../build/target/user/platform-6/libuser.a(SparkIntervalTimer.o): In function `IntervalTimer::start_SIT(unsigned short, bool)':
SparkIntervalTimer/SparkIntervalTimer.cpp:163: undefined reference to `RCC_APB1PeriphClockCmd'
SparkIntervalTimer/SparkIntervalTimer.cpp:153: undefined reference to `RCC_APB1PeriphClockCmd'
SparkIntervalTimer/SparkIntervalTimer.cpp:158: undefined reference to `RCC_APB1PeriphClockCmd'
SparkIntervalTimer/SparkIntervalTimer.cpp:189: undefined reference to `TIM_TimeBaseInit'
SparkIntervalTimer/SparkIntervalTimer.cpp:190: undefined reference to `TIM_Cmd'
SparkIntervalTimer/SparkIntervalTimer.cpp:191: undefined reference to `TIM_ITConfig'
SparkIntervalTimer/SparkIntervalTimer.cpp:200: undefined reference to `NVIC_Init'
../../../build/target/user/platform-6/libuser.a(SparkIntervalTimer.o): In function `IntervalTimer::stop_SIT()':
SparkIntervalTimer/SparkIntervalTimer.cpp:240: undefined reference to `TIM_Cmd'
SparkIntervalTimer/SparkIntervalTimer.cpp:244: undefined reference to `NVIC_Init'
SparkIntervalTimer/SparkIntervalTimer.cpp:247: undefined reference to `TIM_DeInit'
collect2: error: ld returned 1 exit status
make: *** [b6cc983af97e12c7345eaae9484624c7abc8ee1af7a119aba287c76d0932.elf] Error 1
Error: Could not compile. Please review your code.
If I try this line instead of my old line: myTimer.begin(blink(), 5000, hmSec);
I get this error message:
particle-ktbox.cpp: In function 'void setup()':
particle-ktbox.cpp:11:39: error: invalid use of void expression
void blink(void);
^
make[1]: *** [../build/target/user/platform-6particle-ktbox.o] Error 1
make: *** [user] Error 2
I will appreciate any help on this.
Best Regards,
Mohammed