LED_delay.rar

  • 浏览量:797
  • 下载量:127
  • 资料大小:854.2 KB
  • 日期:2017-02-18
  • 上传者:邹姆斯特朗
  • 分享
  • 评论
  • 举报
  • 收藏

资料描述

    本帖最后由 邹姆斯特朗 于 2017-2-18 11:14 编辑

    众所周知,延时分为精准延时和不精准延时两种。不精准的延时多用for循环或while(a--)实现。精准延时,有单指令延时(例如nop())和定时器实现。今天我们来做一个利用systick和pit实现精准延时的实验。
    systick
    在arm mcu中都有一个systick模块,可实现定时,用于操作系统的心跳.systick能产生定时的中断,类似于心跳,可以作为系统的基时。它是一个 24 位的定时器,即一次最多可以计数 2^24 ( =16777216)个时钟脉冲。
    其中主要配置的寄存器:
    1、stk_val :前计数值寄存器,脉冲计数值被保存到里面,只能向下计数,每接收到一个时钟脉冲 stk_val 的值就向下减 1,直至 0。触发异常,就可以在中断服务函数中处理定时事件了。
    2、stk_load:重载寄存器,当 stk_val 的值被减至0 时,由硬件自动把重载寄存器 stk_load中保存的数据加载stk_val,重新向下计数(填充值不能超过 2^24)。
    3、stk_ctrl: systick 配置,只有三个控制位和一个标志位,包括时钟源选择、使能、停止等。
评论(0)

登录后可评论,请 登录注册

   
相关资料
换一换