Сколько второй задержки для этой функции задержки сборки?
Мне нужно помочь с этой функцией задержки сборки. Может ли кто-нибудь помочь мне рассчитать, сколько секундная задержка для этой функции задержки сборки? Это код для платы 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 ответ
Во-первых, вам нужно определить частоту ядра. По умолчанию ядро STM32L152 работает от MSI с тактовой частотой 2,097 МГц (см. Справочное руководство, RM0038). Но прошивка может переопределить эти настройки: посмотрите на стандартную функцию SystemInit().
Во-вторых, с помощью этой таблицы сводных инструкций Cortex M3 рассчитайте общее количество циклов MCU. Обратите внимание, что инструкция перехода занимает более одного цикла, и ее точное значение не определено.
В результате разделите число циклов на частоту (в Гц) - вы должны получить около 12 миллисекунд, если мои предположения о системных часах были правильными.
Но не используйте этот код в реальных системах - это не предсказуемые задержки, это зависит от настроек ускорителя флэш-памяти и активности DMA. Вместо этого используйте задержки по таймеру.