/* * Setup the timer 0 to generate the tick interrupts at the required frequency. */ static void prvSetupTimerInterrupt( void ) { unsigned long ulCompareMatch; /* Calculate the match value required for our wanted tick rate. */ ulCompareMatch = 1000000 / configTICK_RATE_HZ; /* Protect against divide by zero. Using an if() statement still results in a warning - hence the #if. */ #if portPRESCALE_VALUE != 0 { ulCompareMatch /= ( portPRESCALE_VALUE + 1 ); } #endif DisableInterrupts(); InitInterruptController(); DisableInterrupt(64); RegisterInterrupt(64, vTickISR, NULL); pRegs->CTL = 0x003E0000; pRegs->LOD = 1000 - 1; pRegs->RLD = 1000 - 1; pRegs->DIV = portTIMER_PRESCALE; pRegs->CLI = 0; pRegs->CTL = 0x003E00A2; EnableInterrupt(64); }
void main() { uart_init(); InitInterruptController(); DisableInterrupts(); timer_init(); OSInit(); OSTaskCreate(userApp1, (void *) 0, &userAppTaskStk1[1000-1],5); OSTaskCreate(userApp2, (void *) 0, &userAppTaskStk2[1000-1],6); OSStart(); while(1); }
/** * This is the systems main entry, some call it a boot thread. * * -- Absolutely nothing wrong with this being called main(), just it doesn't have * -- the same prototype as you'd see in a linux program. **/ int main(void) { SetGpioFunction(47, 1); // RDY led initFB(); SetGpio(47, 1); videotest(); DisableInterrupts(); InitInterruptController(); xTaskCreate(task1, "LED_0", 128, NULL, 0, NULL); xTaskCreate(task2, "LED_1", 128, NULL, 0, NULL); vTaskStartScheduler(); /* * We should never get here, but just in case something goes wrong, * we'll place the CPU into a safe loop. */ while(1) { ; } }