打印
[AT32F421]

延时不稳定问题

[复制链接]
128|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ughbss|  楼主 | 2024-12-25 11:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ughbss 于 2024-12-25 11:16 编辑

使用AT32F421, 点RGB灯串,采用NOP延时while里只调用这个函数  数据为0X0000,没有其他代码





示波器实测,方波的时间宽度不一致,挺奇怪,按道理NOP延时应该是固定指令周期才对啊

使用特权

评论回复
沙发
ughbss|  楼主 | 2024-12-25 11:15 | 只看该作者
C:\Users\86157\Desktop\微信图片_3.jpg

使用特权

评论回复
板凳
ughbss|  楼主 | 2024-12-25 11:34 | 只看该作者
看了下汇编指令数,应该宽度一致才对

使用特权

评论回复
地板
muyichuan2012| | 2024-12-25 12:58 | 只看该作者
楼上正解,要看一下汇编指令。还有就是GPIO翻转也需要花时间的,根据优化等级不同以及while loop回圈,CPU有时会从R寄存器直接调指令,有时会从flash调指令,两种方式执行速度是不一样的。
另外,如果你是要做延时,最好用systick或者定时器来实现,专门的硬件外设做专门的事。仅用nop是无法做到精准的,尤其是在有中断的时候。

使用特权

评论回复
5
muyichuan2012| | 2024-12-25 13:25 | 只看该作者
这里有篇文章,可以参考一下:
在Cortex-M系列上如何准确地做us级延时?
https://www.cnblogs.com/pheye/p/5630938.html

使用特权

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

本版积分规则

8

主题

133

帖子

2

粉丝