The Microchip Atmega328 compiler provides a timer function, i.e. #include <Timerone.h>, which allows for simple delay coding such as delay (XXX) for millisecond delays or delayMicroseconds(XXX) for delays of microseconds. Does the Keil Compiler for the Silabs EFM8BB1 provide a timer.h function?
It's not actually provided by the Compiler - it's from a Library.
You would be best to ask SiLabs if they have a standard delay library for their processors.
But the basic approach is the same for whatever processor you use; eg:
https://www.keil.com/support/docs/606.htm
community.arm.com/.../87452
Thanks. Will update what SiLabs' reply is.
Here is the SiLabs reply;
No, you have to write your own delay_ms(), delay_ms(), functions! If it's just delay func.(controller do nothing, just stay in some loop) here is sample functions:void delay_us(unsigned int usec){ unsigned int i; for(i = 0; i < usec; i++){ ;//j++; }}void delay_ms(unsigned int msec){ unsigned int i, j; for(i = 0; i < msec; i++){ for(j = 0; j < 2400; j++){ ;// Wait! } }}, which are valid for "SYSCLK=24Mhz"!If you don't want controller to stay in 'delay loop', you have to use any timer as systick timer with or without using interrupt!
void DELAY_USEC(int){ // where XXXX requires tweaking for each time delay used for(i = 0; i < XXXX; i++);
}
void DELAY_MSEC(int){ // where XXXX & YYYY require tweaking for each time delay used for(i = 0; i < XXXX; i++);{ for(j = 0; j < YYYY; j++);}; }
Based on testing using the EFM8BB1LCK, the above delay methods provide very limited utility compared to the typical timer library functions of most compilers.