• 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




  • 相关阅读:
    点灯
    流水灯
    <<晨间日记>>要点
    PL/SQL 函数学习 Start with...Connect By
    FTP Put步骤回顾
    ORA16038,ORA19809,ORA00312无法归档的解决方法
    Emacs for windows
    ORA01578,ORA01115,ORA01110 ORACLE 数据块损坏
    MySQL存储过程的调优过程
    ORA01110 数据文件日志文件丢失打不开数据库
  • 原文地址:https://www.cnblogs.com/296389183yy/p/9304978.html
Copyright © 2020-2023  润新知