我需要帮助这个装配延迟功能,任何人都可以帮我计算这个装配延迟功能的第二个延迟是多少?它是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
答案 0 :(得分:1)
首先,您需要确定核心频率。 默认情况下,STM32L152内核主频为MSI,频率为2.097 MHz(参见参考手册,RM0038)。 但是固件可以覆盖此设置:查看标准函数SystemInit()。
其次,使用此表Cortex M3 instruction summary,计算MCU周期的总数。请注意,分支指令需要多个周期,并且未定义其准确值。
因此,将周期数除以频率(以Hz为单位) - 如果我对系统时钟的假设是正确的话,你应该得到大约12毫秒。
但是不要在实际系统中使用此代码 - 这延迟不可预测,这取决于闪存加速器设置和DMA活动。改为使用计时器延迟。