nobody wrote on Friday, October 20, 2006:
//------------------------------------------------------------------------------------------------------------------------------- idleTask
static u32_t cpu_free_time = 0;
void vApplicationIdleHook( void );
void vApplicationIdleHook( void ) // for tests only, there must not be vTaskDelay
{
#if DEVBRD
AT91C_BASE_PIOA->PIO_SODR = LED_BT;
#endif
portENTER_CRITICAL();
cpu_free_time++;
portEXIT_CRITICAL();
}
//----------------------------------------------------------------------------------------------
static void vUserTask( void *pvParameters );
static void vUserTask( void *pvParameters )
{
(void) pvParameters;
static char LEDblink = 0;
static u32_t cpu_time;
#define ledblink(led) if (LEDblink) ledon(led); else ledoff(led)
while (1) {
LEDblink ^= 1; // switch blinking
//-------------------------------------------------------------------------------------------- OS control state LED
ledblink(LED_WORK);
vTaskDelay(( portTickType ) 500/*ms*/); // disable for debug vTaskUser stack…
//kprintf("usrSP: %d\n", vGetSP()); // debug
// measure of cpu free time
portENTER_CRITICAL();
cpu_time = cpu_free_time;
cpu_free_time = 0;
portEXIT_CRITICAL();
kprintf("cpu free: %lu\n", cpu_time);
} // while(1)
}
if cpu free = 0, you should correct your tasks, for example:
while(1) vTaskDelay(50);
instead of
while(1);
best regards
Janusz