Здравствуйте, пытаюсь разобраться в логике включения таймера SysTick на Cortex-M3, которую использует стандартная библиотека CMSIS. Взять, например, команду загрузки в регистр SYST_RVR: за это дело в CMSIS отвечает команда вида "SysTick->LOAD=TimerTick", где TimerTick - выбранное время через которое таймер будет обнулять свое значение. В дизассемблере данная команда представляет из себя три команды на ассемблере: LDR r0,[pc,#32] ; @0x08000210; MOV r1,#0xE000E000; STR r0,[r1,#0x14]; Команда MOV в данном случае, как я понял, пишет в R1 стартовый адрес всего регистра SysTick, затем командой STR смещает его на 14 бит, попадая на адрес SYST_RVR (однако при этом я почему-то не вижу, чтобы регистр R1 менялся). А вот, что делает первая строка, почему она взаймодействует с программным счетчиком, и где в этих трех командах происходит загрузка самого значения TimerTick, я не могу понять. Потому прошу помощи. Проект запущен на Keil mVision, процессор STM32f10x.
Самому удалось разобраться, откуда берется TimerTick, но использование первой строчки все равно осталось загадкой.
|