We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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.