大家在开发STM32单片机时候程序需要用到延时一般怎么做?

2019-12-27 18:43发布

一直没用过ARM大家在用STM32时候如果需要延时几ms一般会怎么做呢?也像8位机那样弄一些算式让它空算耗时间吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
cemi
1楼-- · 2019-12-29 05:13
如果是跑系统的话就简单了,就调用延迟函数就行了。
xuzhiping9889
2楼-- · 2019-12-29 10:17
定时器来做
落叶知秋
3楼-- · 2019-12-29 15:26
security 发表于 2017-7-7 15:18
看了一下,是用 DWT 实现的。
以前也看到过此概念,一直没去看看,再关注一下。

多谢告知,之前没有看过这帖子。

我给的那个帖子,除了延时功能外,还有个“计时”功能,这个用ARM做起来简单很多。

本质上延时功能就是要以“精确时间”为基础,倍数乘上去,到了目标值就退出罢了。

定时器方式是一种方式,但用while(i--)这种就不好操作,要移植就得再算,算出来也不一定准,而且编译器不一定放过它

本着“怎么方便怎么来”的电工精神,看需求选择方案吧。
xingkong911
4楼-- · 2019-12-29 19:32
xuzhiping9889 发表于 2017-7-7 15:44
定时器来做

你的头像是什么锁?
Jmhh247
5楼-- · 2019-12-29 23:49
 精彩回答 2  元偷偷看……
security
6楼-- · 2019-12-30 03:53
落叶知秋 发表于 2017-7-7 16:04
多谢告知,之前没有看过这帖子。

我给的那个帖子,除了延时功能外,还有个“计时”功能,这个用ARM做起 ...

用软件模拟的话,
其实最佳的是要用汇编来实现,或者内联汇编,这样就绕开了 C 编译器的优化干扰。
其次,延时 1ms、1us 的 count,可以跟据主频来算,调整主频的话, count 相应被调整了,就不受时钟干扰。

当然这种方案,涉及汇编等知识,对技能的要求会多一点,不如用定时器,来得易理解、传承。

一周热门 更多>