打印

stm32中延时程序

[复制链接]
5596|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wasteland|  楼主 | 2008-6-27 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在处理器越用性能越强,突然想起一个问题,不知道大家通常在STM32中是怎样写比较准确点的延时程序,如延时5ms,us等等之类的程序,误差大概多少.这个当然要考虑到主时钟频率
沙发
nj手术刀| | 2008-6-27 16:22 | 只看该作者

查32位计时器或用定时器

使用特权

评论回复
板凳
pb486| | 2008-6-27 16:24 | 只看该作者
地板
香水城| | 2008-6-27 18:47 | 只看该作者

因为STM32的高性能,不建议在STM32中使用延时程序

可以按照我在3楼链接的帖子中的建议做。

如果一定要用,超过0.5us的延迟,最好使用定时器,不要使用指令堆砌。

使用定时器有两种办法,一、使用输出比较,二、按照2楼的说法检查定时器的计数器。这里说的定时器也包括Systick。

使用特权

评论回复
5
nomoneyiv| | 2008-6-27 19:36 | 只看该作者

版主



香版主能否给个例子,说明一下呢?

使用特权

评论回复
6
香水城| | 2008-6-27 21:11 | 只看该作者

我提出了很多建议,什么例子?

使用特权

评论回复
7
wasteland|  楼主 | 2008-6-30 11:25 | 只看该作者

stm32中延时程序

to香水城,能否给提供几个定时器实现延时的demo程序给大家参照一下,谢谢, 这样使用起来就更清晰了.谢谢

使用特权

评论回复
8
香水城| | 2008-7-1 12:34 | 只看该作者

我不赞成通过程序做延时

我不赞成通过程序做延时,所以没有现成的Demo程序,但可以给你一个简单的方案试试:

配置定时器为单脉冲模式,可以按照需要产生输出或不产生输出,设置好定时时间后,启动定时器的计数器,然后检测计数器是否停止,如果计数器停止则表示设置的时间到时。如果设置的时间较长,可以在启动计数器之后先做一些其他事情,然后再检测计数器的停止状态。

此方法的误差为配置定时器的语句和检测计数器语句的执行时间,如果在计数器停止前有中断服务并处理完成,不影响计时。


另一个方案是使用Systick:定时开始前读出计数器的值,把这个数值加上要求的延迟时间得到一个目标数值,然后不断地读出计数器的值与目标数值比较,当读出的数值达到或超过目标数值,则表示延迟时间到。

这个方案与前面一个类似,同样可以在延迟时间到达之前先做一些其他事情,也可以有条件地允许中断处理。

使用特权

评论回复
9
wasteland|  楼主 | 2008-12-10 10:44 | 只看该作者

关于stm32访问外部MEMORY的实现

用STM32来访问外部MEMORY时,STM32没有专用的WR和RD引脚,数据口和地址总线。

而我又要用STM32来访问外部的并口MEMORY时,该怎么实现?是否要用STM32的接口来模拟

MEMORY的各种总线?

你那边目前有没有现成的实现过的DEMO方案。能否提供一份,我将来可能会用到。谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

10

帖子

0

粉丝