2025-11-08 06:16:00
延时函数啊,其实是这样的,它用循环指令来实现的。比如那个LDR PC[LDR PC, n]指令,就像个无限循环一样,得设置多少次循环才能让时间到。每次循环要算好时钟周期数,比如主频是100MHz的话,每个循环3个周期,那100万次循环就是3秒。
为啥得这么算呢,因为每个指令执行都要时间啊。比如ARM的LDR PC指令要3个周期,然后循环计数器减1又要1个周期,总共4个周期。假设主频100MHz,那1个周期就是0.01微秒。要延时1秒就得1000000次循环,1000000乘以4周期就是4秒?哎不对啊,可能我算错了。比如实际延时函数可能用LDR PC[LDR PC, 3],这样循环次数得除以3。比如要3秒的话,100万次循环乘以4周期除以100MHz主频,结果就是3秒。所以得根据具体指令周期和主频来调参数。
本题链接: