这个装配延迟函数有多少秒延迟?

时间:2015-09-13 21:32:39

标签: assembly delay stm32 timedelay stm32ldiscovery

我需要帮助这个装配延迟功能,任何人都可以帮我计算这个装配延迟功能的第二个延迟是多少?它是STM32L152-DISCOVERY板的编码,这是它的页面:http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/LN1848/PF258515

Delay       PROC
            push {r1}
            LDR r1, = 0x1000
again1      NOP
            NOP
            subs r1, #1
            bne again1
            pop {r1}
            bx lr
            ENDP

1 个答案:

答案 0 :(得分:1)

首先,您需要确定核心频率。 默认情况下,STM32L152内核主频为MSI,频率为2.097 MHz(参见参考手册,RM0038)。 但是固件可以覆盖此设置:查看标准函数SystemInit()。

其次,使用此表Cortex M3 instruction summary,计算MCU周期的总数。请注意,分支指令需要多个周期,并且未定义其准确值。

因此,将周期数除以频率(以Hz为单位) - 如果我对系统时钟的假设是正确的话,你应该得到大约12毫秒。

但是不要在实际系统中使用此代码 - 这延迟不可预测,这取决于闪存加速器设置和DMA活动。改为使用计时器延迟。