this version uses SysTick timer to organize delay