使用《不完全手册》中配置Systick的方法和延时函数,延时不准

2019-07-21 04:52发布

    Systick配置如下: [mw_shl_code=c,true] SysTick->CTRL &= 0xFFFFFFFB ; fac_ms = (u16)(SystemCoreClock/8)*1000 ;[/mw_shl_code] 延迟函数代码如下:
[mw_shl_code=c,true]void delayms(u16 time ) { u32 tloc; SysTick->LOAD = (u32)time*fac_ms ; SysTick->VAL = 0x00 ; SysTick->CTRL = 0x01 ; do { tloc = SysTick->CTRL ; }while( (tloc&0x00000001) && !(tloc&(0x00000001<<16)) ) ; SysTick->CTRL = 0 ; SysTick->VAL = 0 ; }[/mw_shl_code] 如上配置之后,延时1000ms大概就200ms,延迟50ms又有100ms,拜求指导
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。