sysTick定时器

SysTick定时器也叫SysTick滴答定时器,它是Cortex-M3内核的一个 外设,被嵌入在 NVIC 中。它是一个24 位向下递减的定时器,每计数一次所需时间为1/SYSTICK,SYSTICK是系统定时器时钟,它可以直接取自 系统时钟(72M),还可以通过系统时钟8分频后获取(9M)。当定时器计数到0时,将从LOAD 寄存器中自动重装定时器初值,重新向下递减计数,如此循环往 复。如果开启SysTick中断的话,当定时器计数到0,将产生一个中断信 号。因此只要知道计数的次数就可以准确得到它的延时时间。

微妙      1/9*次数

 

 

delay_ms()函数:
void delay_ms(u16 nms)
{          
  u32 temp;    
  SysTick->LOAD=(u32)nms*fac_ms;  //时间加载(SysTick->LOAD为24bit)
  SysTick->VAL =0x00;  //清空计数器
  SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;  //开始倒数 
  do
  {
  temp=SysTick->CTRL;
  }while((temp&0x01)&&!(temp&(1<<16)));  //等待时间到达  
  SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;  //关闭计数器
  SysTick->VAL =0X00;         //清空计数器          
}

 

 

 

!是非

不断地递减,为0时跳出while循环

不能大于1864ms=1.864s

 LOAD是24位寄存器  FFFFFF十进制16777215>=(u32)nms*fac_ms,超过会溢出  fac_ms是9000       16777215/9000=1864

 

 

 

 

 

 

 




转载于:https://www.cnblogs.com/296389183yy/p/9304978.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值