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,拜求指导
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
谢谢原子解答,非常感谢
---------------------------------
开定时器,设置cnt等于0,然后另外一个时刻,读取cnt的值,就可以了。
一周热门 更多>