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--){};
}
} |