25007|42

161

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

STM32精确延时的实现方法 [复制链接]

前面用STM32的GPIO模拟液晶驱动时序时遇到一个问题,就是怎样产生一段较为精确的延时。通常产生一小段延时的方法就是利用一个递增或者递减循环进行软件延时。  例:
  我在使用MPLAB IDE进行PIC单片机的开发时,MPLAB提供了一个Watch(跑表)功能,可以很方便的查看一个函数或一段代码的运行时间,利用这个功能就可以很容易的编写能产生精确延时的代码。而据我目前了解的情况,不管是IAR还是RealView MDK都没有提供类似的功能,这样就不能像上例那样来获得较为精确的延时了。
  有人说了,可以用定时器中断的方法来产生精确延时,一点没错,不过在STM32中还可以采用更简单的方法来产生精确延时,那就是利用Cortex系统定时器—SysTick。
  在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。SysTick的最大使命,就是定期地产生异常请求,作为系统的时基。
  SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。SysTick是一个24 位的倒数定时器,当计数值减到0 时,将从RELOAD 寄存器中自动重装载定时初值,只要不把它在SysTick控制及状态寄存器中的使能位清除,就永不停息。SysTick定时器除了能服务于操作系统之外,还能用于其它目的:如作为一个闹铃,用于测量时间等。
  用SysTick产生精确延时的方法如下:
  1、首先对SysTick进行设置
[url=]点击看原图[/url]


  2、延时函数
  3. 中断函数
  4. 中断调用函数
  利用以上几个函数就能产生精确延时了,使用时通过调用SysTick_Delay(u32 nTime)函数来设置延时时间,这里提供一个产生秒延时的程序供大家参考。

9d6c7594-b06e-4c8e-a903-77e8bb22aec6.rar (4.8 KB, 下载次数: 387)


  附上效果图,大家看完不要忘了“顶一下”啊!
此帖出自stm32/stm8论坛

最新回复

用了,买开发板的时候提供的资料里有这个文件,挺好地  详情 回复 发表于 2012-6-6 14:47
点赞 关注
 

回复
举报

16

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
顶,虽然看不懂呵呵
此帖出自stm32/stm8论坛
 
 

回复

13

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
顶,虽然我也看不懂呵呵
此帖出自stm32/stm8论坛
 
 

回复

109

帖子

0

TA的资源

纯净的硅(中级)

4
 

Re: [分享] STM32精确延时的实现方法

好东西,谢谢楼主,学习了!
此帖出自stm32/stm8论坛
 
 
 

回复

35

帖子

0

TA的资源

纯净的硅(初级)

5
 
楼主看不到图片,能不能想个办法
此帖出自stm32/stm8论坛
 
 
 

回复

41

帖子

0

TA的资源

一粒金砂(高级)

6
 
也是看不到圖:(
此帖出自stm32/stm8论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

7
 
保存下来,慢慢看,谢谢分享
此帖出自stm32/stm8论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

8
 
谢谢分享~~~~~~~~~~
此帖出自stm32/stm8论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

9
 

顶起来

一直想实现精确地定时,谢谢楼主的资料
此帖出自stm32/stm8论坛
 
 
 

回复

46

帖子

0

TA的资源

纯净的硅(中级)

10
 
这个论坛不错,下了不少资料,非常感谢!值得,要多多回帖,尊重楼主的劳动果实.
此帖出自stm32/stm8论坛
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(中级)

11
 
不错,这样那不是定时器可以省略了?
此帖出自stm32/stm8论坛
 
 
 

回复

113

帖子

0

TA的资源

一粒金砂(中级)

12
 
先几下了!
此帖出自stm32/stm8论坛
 
 
 

回复

531

帖子

0

TA的资源

一粒金砂(高级)

13
 
很好的资料,多谢分享
此帖出自stm32/stm8论坛
 
 
 

回复

202

帖子

0

TA的资源

五彩晶圆(初级)

14
 
mark ~ STM32精确延时的方法
此帖出自stm32/stm8论坛
 
个人签名越磨砺,越光芒!!!
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

15
 
非常谢谢LZ,就需要这样的例子,更容易理解
此帖出自stm32/stm8论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

16
 

Nice!!!很不错的说!
此帖出自stm32/stm8论坛
 
 
 

回复

289

帖子

0

TA的资源

一粒金砂(中级)

17
 
good!
此帖出自stm32/stm8论坛
 
个人签名科学家研究已有的世界,工程师创造未来的世界!
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

18
 
多谢楼主分享
此帖出自stm32/stm8论坛
 
个人签名一切只有坚持下来才能明白!
 
 

回复

186

帖子

0

TA的资源

一粒金砂(中级)

19
 
非常不错的资源,我先收下了,等我有了开发板就来试试
此帖出自stm32/stm8论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

20
 
一直在烦恼这个问题,终于有解了!
此帖出自stm32/stm8论坛
 
个人签名一切只有坚持下来才能明白!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表