int main() { //Low level init: Clock and Interrupt controller prvClockInit(); nvicInit(); initUsecTimer(); //Launch the system task that will initialize and start everything systemLaunch(); //Start the FreeRTOS scheduler vTaskStartScheduler(); //Should never reach this point! while(1); return 0; }
/***************************************************************************** Function : osTickStart Description : Set system tick reqister, and start system tick exception Note that This function is called by LOS_Start() In LiteOS kernel. so, please don't init system tick before LiteOS kernel Inited in your own system. Input : None Output : None Return : LOS_OK *****************************************************************************/ unsigned int osTickStart(void) { unsigned int uwRet = 0; /* This code section LOS need, so don't change it */ g_ucycle_per_tick = sys_clk_freq / tick_per_second; LOS_SetTickSycle(g_ucycle_per_tick); /* Set system tick relaod register valude, current register valude and start system tick exception. Note: here can be replaced by some function , for example in Stm32 bsp you can just call SysTick_Config(sys_clk_freq/tick_per_second); */ #ifdef LOS_ADuCM450LF prvClockInit(); SysTick_Config(g_ucycle_per_tick); #else *(volatile UINT32 *)OS_SYSTICK_RELOAD_REG = g_ucycle_per_tick - 1; *((volatile UINT8 *)OS_NVIC_EXCPRI_BASE + (((UINT32)(-1) & 0xF) - 4)) = ((7 << 4) & 0xff); *(volatile UINT32 *)OS_SYSTICK_CURRENT_REG = 0; *(volatile UINT32 *)OS_SYSTICK_CONTROL_REG = (1 << 2) | (1 << 1) | (1 << 0); #endif return uwRet; }