zoukankan      html  css  js  c++  java
  • SYSTick 定时器

        CM3 内核的处理器,内部包含了一个 SysTick 定时器,(SysTick 的时钟源自 HCLK 的 8 分频,8个系统时钟周期systick跳一个,即8*1/72M=1/9 us)SysTick  是一个 24  位的倒计数定时器,当计到 0  时,将从RELOAD  寄存器中自动重装载定时初值。只要不把它在 SysTick  控制及状态寄存器中的使能位清除,就永不停息。
        利用 STM32 的内部 SysTick 来实现延时的,这样既不占用中断,也不占用系统定时器。因为在 ucos 下 systick 不能再被随意更改,如果我们还想利用 systick 来做 delay_us 或者delay_ms 的延时,就必须想点办法了,这里我们利用的是时钟摘取法。以 delay_us 为例,比如delay_us (50),在刚进入 delay_us 的时候先计算好这段延时需要等待的 systick 计数次数,这里为 50*9 (假设系统时钟为 72Mhz,那么 systick 每增加 1,就是 1/9us) ,然后我们就一直统计 systick的计数变化,直到这个值变化了 50*9,一旦检测到变化达到或者超过这个值,就说明延时 50us时间到了。———实质上就是不改变systick基本单位时长,以基本单位时长为基本元做多次到达摘取。
    
    
     
    每走一步,都是新的开始!
  • 相关阅读:
    ubuntu安装ActiveMQ
    UTF-8和GBK区别
    MapReduce实现二次排序(温度年份排序)
    MapReduce实现倒排索引
    MapReduce实现多表链接
    MapReduce实现单表链接
    Linux服务器的性能调优实战篇CentOS6最小化安装后的优化
    Linux服务器的性能调优理论篇
    Windows中安装bash Cygwin工具
    shell基础知识
  • 原文地址:https://www.cnblogs.com/shafei/p/3602837.html
Copyright © 2011-2022 走看看