1

我需要帮助解决这个装配延迟功能,谁能帮我计算一下这个装配延迟功能需要多少秒的延迟?它是 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
4

1 回答 1

1

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

其次,使用此表Cortex M3 指令摘要,计算 MCU 周期总数。请注意,该分支指令需要一个以上的周期,并且其确切值未定义。

结果,将周期数除以频率(以赫兹为单位) - 如果我对系统时钟的假设正确,您应该得到大约 12 毫秒。

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

于 2015-09-16T09:45:44.617 回答