1.
void delay_config(void)
{SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk; SysTick->LOAD = 167;
}void delay_ms(u32 nTime)
{nTime *= 1000;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; while(nTime--){while((SysTick->CTRL&0X010000) == 0); }SysTick->CTRL &= (~SysTick_CTRL_ENABLE_Msk);
}void delay_us(u32 nTime)
{SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;while(nTime--){while((SysTick->CTRL&0X010000) == 0);}SysTick->CTRL &= (~SysTick_CTRL_ENABLE_Msk);
}
2.
static u8 fac_us=0;
static u16 fac_ms=0; void systick_init (u8 sysclk)
{SysTick->CTRL&=0xfffffffb; fac_us=sysclk/8; fac_ms=(u16)fac_us*1000;
} void delay_ms( uint32 time_ms )
{ u32 temp; SysTick->LOAD=(u32)time_ms*fac_ms; SysTick->VAL =0x00; SysTick->CTRL=0x01 ; do{temp=SysTick->CTRL;}while(temp&0x01&&!(temp&(1<<16))); SysTick->CTRL=0x00; SysTick->VAL =0X00;
} void delay_us( uint32 time_us )
{ u32 temp; SysTick->LOAD=time_us*fac_us; SysTick->VAL=0x00; SysTick->CTRL=0x01 ; do{temp=SysTick->CTRL;}while(temp&0x01&&!(temp&(1<<16))); SysTick->CTRL=0x00; SysTick->VAL =0X00;
}