Template.rar

  • 浏览量:812
  • 下载量:0
  • 资料大小:0 B
  • 日期:2015-09-24
  • 上传者:gjianw217
  • 分享
  • 评论
  • 举报
  • 收藏

资料描述

    在单片机开发过程中,必然会涉及到一个延时程序的编写的问题,而一般的做法是一个for循环里去减一个很大的数,直到为0,则延时完成,那个数的值则是根据时钟频率和指令运行周期,估算出来的,不够精确。其中常用的一种方法是,在keil中设定好时钟频率,然后通过软件仿真试来算延时时间,以达到较精确定时。但这种方法一般都不够方便,延时也不够精确,更高阶一点的方法便是开一个定时器,在定时中断里面计数达到精确延时的目的。


    在stm32的应用中,可考虑利用systick系统嘀嗒定时器来实现。但在stm32开发手册中对它的介绍却很少,几乎到没有的程度。因为它是cortex内核的部分,cm3为它专门开出一个异常类型,并且在中断向量表中占有一席之地(异常号15),这样它可以很方便的移植到不同厂商出cm3内核的芯片上,并且对于有实时操作系统的软件,它一般会作为整个系统的时基,这个对操作系统非常重要。有关systick的详细介绍可参考《cortex-m3 权威指南》第133 页第八章及第179页第十三章。


    1 认识systick时钟


    stm32中的systick,属于nvic控制部分,一共有4个寄存器,如下图所示









    (1)stk_csr控制寄存器:









    其中:             


    第0位:enable,systick 使能位  (0:关闭systick功能;1:开启systick功能)  


    第1位:tickint,systick 中断使能位    (0:关闭systick中断;1:开启systick中断)  


    第2位:clksource,systick时钟源选择  (0:使用hclk/8 作为systick时钟;1:使用hclk作为systick时钟)  


    第16位:countflag,systick计数比较标志,如果在上次读取本寄存器后,systick 已经数到了0,则该位为1。如果读取该位,该位将自动清零


    (2)stk_load  重载寄存器:









    systick是一个递减的定时器,当定时器递减至0时,重载寄存器中的值就会被重装载,继续开始递减。stk_load  重载寄存器是个24位的寄存器最大计数0xffffff。


    (3)
评论(0)

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

   
相关资料
换一换