typedef struct
{
  void (*delayUs)(uint32_t);
  void (*delayMs)(uint32_t);
  bool (*enabled)(void);
  void (*startMs)(uint32_t);
  void (*stop)(void);
  bool (*expired)(void);
} timer_t; 
extern const timer_t g_timer32b0m0;
extern const timer_t g_timer32b0m1;
...
  | 
 static void Timer32b0m0DelayUs (uint32_t us) { ... }
static void Timer32b0m0DelayMs (uint32_t ms) { Timer32b0m0DelayUs(ms * 1000); }
static bool Timer32b0m0Enabled (void) { ... } 
static void Timer32b0m0StartMs (uint32_t ms) { ... }
static void Timer32b0m0Stop (void) { ... }
static bool Timer32b0m0Expired (void) { ... }
const timer_t g_timer32b0m0 =
{
  Timer32b0m0DelayUs,
  Timer32b0m0DelayMs,
  Timer32b0m0Enabled,
  Timer32b0m0StartMs,
  Timer32b0m0Stop,
  Timer32b0m0Expired
};
...
  | 
 g_timer32b0m0.delayMs(100); g_timer32b0m1.delayUs(550);  | 
 g_timer32b0m2.startMs(1000);
while (!checkSomeFlag())
{
  if (g_timer32b0m2.expired())
  {
    break;
  }
  g_timer32b0m3.delayUs(100);
}
g_timer32b0m2.stop();  | 
 typedef struct
{
  void (*delayUs)(uint32_t);
  void (*delayMs)(uint32_t);
  bool (*enabled)(void);
  void (*startMs)(uint32_t);
  void (*stop)(void);
  bool (*expired)(void);
} timer_t; 
extern const timer_t g_timer32b0m0;
extern const timer_t g_timer32b0m1;
...
  | 
 static void Timer32b0m0DelayUs (uint32_t us) { ... }
static void Timer32b0m0DelayMs (uint32_t ms) { Timer32b0m0DelayUs(ms * 1000); }
static bool Timer32b0m0Enabled (void) { ... } 
static void Timer32b0m0StartMs (uint32_t ms) { ... }
static void Timer32b0m0Stop (void) { ... }
static bool Timer32b0m0Expired (void) { ... }
const timer_t g_timer32b0m0 =
{
  Timer32b0m0DelayUs,
  Timer32b0m0DelayMs,
  Timer32b0m0Enabled,
  Timer32b0m0StartMs,
  Timer32b0m0Stop,
  Timer32b0m0Expired
};
...
  | 
 g_timer32b0m0.delayMs(100); g_timer32b0m1.delayUs(550);  | 
 g_timer32b0m2.startMs(1000);
while (!checkSomeFlag())
{
  if (g_timer32b0m2.expired())
  {
    break;
  }
  g_timer32b0m3.delayUs(100);
}
g_timer32b0m2.stop();  | 
 typedef struct
{
  void (*delayUs)(uint32_t);
  void (*delayMs)(uint32_t);
  bool (*enabled)(void);
  void (*startMs)(uint32_t);
  void (*stop)(void);
  bool (*expired)(void);
} timer_t; 
extern const timer_t g_timer32b0m0;
extern const timer_t g_timer32b0m1;
...
  | 
 static void Timer32b0m0DelayUs (uint32_t us) { ... }
static void Timer32b0m0DelayMs (uint32_t ms) { Timer32b0m0DelayUs(ms * 1000); }
static bool Timer32b0m0Enabled (void) { ... } 
static void Timer32b0m0StartMs (uint32_t ms) { ... }
static void Timer32b0m0Stop (void) { ... }
static bool Timer32b0m0Expired (void) { ... }
const timer_t g_timer32b0m0 =
{
  Timer32b0m0DelayUs,
  Timer32b0m0DelayMs,
  Timer32b0m0Enabled,
  Timer32b0m0StartMs,
  Timer32b0m0Stop,
  Timer32b0m0Expired
};
...
  | 
 g_timer32b0m0.delayMs(100); g_timer32b0m1.delayUs(550);  | 
 g_timer32b0m2.startMs(1000);
while (!checkSomeFlag())
{
  if (g_timer32b0m2.expired())
  {
    break;
  }
  g_timer32b0m3.delayUs(100);
}
g_timer32b0m2.stop();  | 
 
volatile uint32_t delay;                //delay counter
...
//SysTick timer handler
void SysTick_Handler(void)                 //Interrupt handler 1ms
{
//delay counter
 if(delay)delay--;                        //delay counter
....
}
  | 
 delay = 50; //set 50 ms delay while(delay); //wait for end of delay  | 
 
delay = 50;                            //set 50 ms timeout
sensor_error =0;                    //reset sensor error
while(!sensor_data_ready)            //wait for sensor data
{
 if(delay == 0)                        //timeout
 {
  sensor_error =1;                     //set sensor error 
  break;
 }                                    //end timeout
}                                    //end wait for sensor data  | 
 void _delay_ms (uint16_t ms)
{
 uint16_t delay;
 volatile uint32_t i;
 for (delay = ms; delay >0 ; delay--)
//1ms loop with -Os optimisation
  {
  for (i=3500; i >0;i--){};
  }
}  | 
 volatile uint32_t msTicks;/* counts 1ms timeTicks */
void SysTick_Handler(void)
{
msTicks++;/* increment counter necessary in Delay() */
}
__inline static void _delay_ms(uint32_t del)
{
uint32_t curTicks;
curTicks = msTicks;
while ((msTicks - curTicks) < del)
{
__WFI();
}
}
void setSYSTICK(void)// Setup Systick!
{
if (SysTick_Config(SystemCoreClock / 100))
{ /* Setup SysTick Timer for 1 msec interrupts  */
while (1);                                  /* Capture error */
}
if ( !(SysTick->CTRL & (1<<SysTick_CTRL_CLKSOURCE_Msk)) )
{
LPC_SYSCON->SYSTICKCLKDIV = 0x08;
}
}
int main(void)
{
    SystemInit();
    setSYSTICK();
 LPC_PMU->PCON |= (1<<11);
SCB->SCR &= ~(1<<2);
while(1)
{
_delay_ms(100);
                //Do Something
}
return 0 ;
}  | 
 volatile uint32_t msTicks;/* counts 1ms timeTicks */
void SysTick_Handler(void)
{
msTicks++;/* increment counter necessary in Delay() */
}
__inline static void _delay_ms(uint32_t del)
{
uint32_t curTicks;
curTicks = msTicks;
while ((msTicks - curTicks) < del)
{
__WFI();
}
}
void setSYSTICK(void)// Setup Systick!
{
if (SysTick_Config(SystemCoreClock / 100))
{ /* Setup SysTick Timer for 1 msec interrupts  */
while (1);                                  /* Capture error */
}
if ( !(SysTick->CTRL & (1<<SysTick_CTRL_CLKSOURCE_Msk)) )
{
LPC_SYSCON->SYSTICKCLKDIV = 0x08;
}
}
int main(void)
{
    SystemInit();
    setSYSTICK();
 LPC_PMU->PCON |= (1<<11);
SCB->SCR &= ~(1<<2);
while(1)
{
_delay_ms(100);
                //Do Something
}
return 0 ;
}  | 
 void _delay_ms (uint16_t ms)
{
 uint16_t delay;
 volatile uint32_t i;
 for (delay = ms; delay >0 ; delay--)
//1ms loop with -Os optimisation
  {
  for (i=3500; i >0;i--){};
  }
}  |