STM32不用定时器软件可以实现高精度的延时么?

[复制链接]
 楼主| MTCN2013 发表于 2016-8-14 21:06 | 显示全部楼层 |阅读模式
STM32不用定时器软件可以实现高精度的延时么?
叶覃 发表于 2016-8-15 11:54 | 显示全部楼层
不用定时器的话,只能用nop实现延时了。
huafei123 发表于 2016-8-17 16:19 | 显示全部楼层
叶覃 发表于 2016-8-15 11:54
不用定时器的话,只能用nop实现延时了。

这样的延时,会随着主频的改变而改变的,用的时候不方便。
neomissing 发表于 2016-8-17 18:43 | 显示全部楼层
可以的,用调试模块延时
mdk55555 发表于 2016-8-18 17:28 | 显示全部楼层
精准的延时,需要用汇编加nop实现的。单独nop,容易被优化掉。
haokeer 发表于 2016-8-20 15:36 | 显示全部楼层
对于32位机,精确延时就不能再用数指令的方式了。太浪费资源了
xiaolong12 发表于 2016-8-20 16:30 | 显示全部楼层
给大家一个延迟程序,这个很精确
__asm  void IDelayLoop(INT32 count)
{

L1  subs    r0, r0, #6
    bgt     L1        
    BX      lr
}

void TimeSleepMicroSeconds( UINT32 uSec )
{
    uSec *= (SYSTEM_CYCLE_CLOCK_HZ / ONE_MHZ);
    int iterations = (int)uSec - 5;

    IDelayLoop(iterations);
}
yysforever 发表于 2016-8-22 09:29 | 显示全部楼层
精确和软件延时,本来就是相悖论的。不可以做到两者兼得
冰是睡着的冰 发表于 2016-8-22 22:20 | 显示全部楼层
要想精确,必须上硬件,只有硬件才可以保证一定的精度。
jouney316 发表于 2016-8-23 11:46 | 显示全部楼层
试试定时器,系统滴答定时器。不过这需要占用一定的外设资源
Dennis-Zhou 发表于 2016-8-23 13:39 | 显示全部楼层
一般延时,只会用在IO模拟时序的场合,这时候用到延时。在这个场合,精度就不是那么重要了。
dongbaohui 发表于 2016-8-24 14:29 | 显示全部楼层
可以试试以太网的网络对时,这样就不需要硬件的参与了。纯软件实现
 楼主| MTCN2013 发表于 2017-4-18 22:41 | 显示全部楼层
huafei123 发表于 2016-8-17 16:19
这样的延时,会随着主频的改变而改变的,用的时候不方便。

主频一般是确定的,nop是最准确的了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

155

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部