发新帖我要提问
12
返回列表
打印
[STM32F0]

实现us延时的方法

[复制链接]
楼主: 734774645
手机看帖
扫描二维码
随时随地手机跟帖
21
iyoum| | 2020-9-9 17:16 | 只看该作者 回帖奖励 |倒序浏览
一般对时间要求高的都用计时器中断来做了

使用特权

评论回复
22
一路向北lm| | 2020-9-10 08:49 | 只看该作者
uytyu 发表于 2020-9-9 17:15
通过循环做减法来实现延时

用systick比较好

使用特权

评论回复
23
brucewoo| | 2020-9-10 09:00 | 只看该作者
本帖最后由 brucewoo 于 2020-9-10 09:01 编辑

给你个参考思路,这是我自己使用的代码


#define SYSTICK_PerUs        (SystemCoreClock / 1000000)                                                                //每us多少Tick (72M)

void Duino_DelayUs(uint32_t us)
{
        u32 count = 0;
    u32 ticks = SYSTICK_PerUs * us;                                                                //要经历多少tick
    u32 oldVal = SysTick->VAL;                                                                        //记录开始计数器VAL        
    u32 now = oldVal;

        while(1)
        {
                now = SysTick->VAL;
                if(oldVal>= now)
                {
                        count += (oldVal - now);                                                        //可能没倒数完过
                }
                else
                {
                        count += (oldVal + SYSTICK_DEFAULT_RELOAD- now);        //肯定倒数完过
                }
                if(count >= ticks)
                {
                        return;
                }
                oldVal = now;                                                                                        //更新oldVal值
    }
        
}

使用特权

评论回复
24
勇敢的大白菜| | 2020-9-10 14:46 | 只看该作者
为什么systick函数来做呢?

使用特权

评论回复
25
734774645|  楼主 | 2020-9-22 19:20 | 只看该作者
勇敢的大白菜 发表于 2020-9-10 14:46
为什么systick函数来做呢?

这个定时器就是为时间节奏用的。

使用特权

评论回复
26
观海| | 2020-10-10 12:03 | 只看该作者
非常实用的办法

使用特权

评论回复
27
guanjiaer| | 2020-10-10 12:04 | 只看该作者
感谢楼主的分享

使用特权

评论回复
28
heimaojingzhang| | 2020-10-10 12:06 | 只看该作者
brucewoo 发表于 2020-9-10 09:00
给你个参考思路,这是我自己使用的代码

代码非常不错啊

使用特权

评论回复
29
keaibukelian| | 2020-10-10 12:07 | 只看该作者
精确度如何确认呢

使用特权

评论回复
30
labasi| | 2020-10-10 12:08 | 只看该作者
正好拿来用一用

使用特权

评论回复
31
734774645|  楼主 | 2020-10-10 19:18 | 只看该作者
这样就中断太频繁,使用完,可以恢复设置。

使用特权

评论回复
32
小灵通2018| | 2020-10-10 19:20 | 只看该作者
简单的可以用for循环,或者while循环。

使用特权

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

本版积分规则