硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2968|回复: 3
收起左侧

在MDK AC6的高等级优化下,for循环延迟执行异常了

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2020-6-26 11:51:41 | 显示全部楼层 |阅读模式


大家测试使用要注意这点:

555.jpg
回复

使用道具 举报

16

主题

203

回帖

251

积分

高级会员

积分
251
发表于 2020-6-26 14:41:29 | 显示全部楼层
AC6下肯定会异常的,这个延时函数无法正确运行,无论你怎么改变for的数值,延时函数基本不变。这个不能这样用。应该如下方式
static  void bsp_delay(uint32_t us)
{
        while(us--)
        {
                for(int i = 0;i < 12;i++)
                {
                        __NOP();
                }
  }
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
 楼主| 发表于 2020-6-26 14:51:21 | 显示全部楼层
yjwpm 发表于 2020-6-26 14:41
AC6下肯定会异常的,这个延时函数无法正确运行,无论你怎么改变for的数值,延时函数基本不变。这个不能这样 ...

改成这个了:

DWT实现一个精确微秒延迟的参考例程
http://www.armbbs.cn/forum.php?m ... 9128&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

16

主题

203

回帖

251

积分

高级会员

积分
251
发表于 2020-6-26 14:54:36 | 显示全部楼层
eric2013 发表于 2020-6-26 14:51
改成这个了:

DWT实现一个精确微秒延迟的参考例程

这个延时精度高,我那个精度会差一些
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-29 02:11 , Processed in 0.231022 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表