Search
Podklady pro cvičení_7 - Skalický
ASM program blikaní LED
Jazyk C s volaným ASM podprogramem
Jazyk C s volaným ASM a proměnnými definovanými v ASM i C
USART terminál
Jádro ARM M4
Cortex ARM M4 Technical Reference Manual
Referenční manuál STM32F401
Instrukční sada STM32F4
Datasheet STM32F401
.global main_asm .equ RCC_BASE, 0x40023800 .equ RCC_AHB1ENR_OFFSET, 0x30 .equ RCC_AHB1ENR_GPIOA_EN, 0x0001 .equ GPIOA_BASE, 0x40020000 .equ GPIO_MODER_OFFSET, 0x00 .equ GPIO_ODR_OFFSET, 0x0014 .equ GPIO_MODER_OUTPUT_PA5, 0x0400 .equ GPIO_ODR_PA5, 0x0020 .equ DELAY_MS, 500 .equ COUNT_1MS, 5332 @ ---------------------------- delay_function: bx lr @ ---------------------------- blink_led: bx lr @ ---------------------------- init_function: bx lr @ ---------------------------- main_asm: bl init_function loop: bl delay_function bl blink_led b loop
V každém jádře ARM procesoru lze najít blok DWT (Data Watchpoint and Trace Unit), který počítá počet instrukcních cyklů, které procesor vykonal. Lze tímto způsobem si ověřit, jak dlouho bude trvat zpoždění, v našem případě počet cyklů pro 500ms. Tuto informaci najdete v Cortex ARM M4 Technical Reference Manual. Konkrétně registr DWT_CYCCNT na adrese 0xE0001004 nám udává počet cyklů.
DWT_CYCCNT
0xE0001004