zoukankan      html  css  js  c++  java
  • 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




  • 相关阅读:
    Kettle 使用入门
    git mac客户端使用提交与同步
    MAC 远程桌面链接 证书或链接无效
    mac下wifi无法连接的问题
    mysql时间段内查询
    mybatis 特殊符号及like的使用
    mac下剪切文件或文件夹
    eclipse下使用git下载和上传项目
    unbutu下搭建FTP服务
    mybatis 的if else
  • 原文地址:https://www.cnblogs.com/296389183yy/p/9304978.html
Copyright © 2011-2022 走看看