@.CHARSET =CP1251
@GNU AS

.SYNTAX   unified             @ синтаксис исходного кода
.THUMB                        @ тип используемых инструкций Thumb
.CPU      cortex-m4           @ процессор

.INCLUDE   "/src/inc/rcc.inc"
.INCLUDE   "/src/inc/tim2-5.inc"

.SECTION  .asmcode

@ основная программа
.GLOBAL   TIM3_INIT
TIM3_INIT:
                    MOV        R1, 1

                    LDR        R2, = PERIPH_BB_BASE + ( RCC_BASE + RCC_APB1ENR ) * 32 + RCC_APB1ENR_TIM3EN_N * 4    @ включим тактирование Timer 3
                    STR        R1, [ R2 ]

                     @ настройка таймера Timer 3
                    LDR        R2, = TIM3

                    LDR        R0, = 420 - 1    @ предделитель счетчика частота счета 42Mhz / 420 = 100 Кгц
                    STR        R0, [ R2, TIM2T5_PSC ]

                    LDR        R0, = 100    @ максимальное значение счетчика
                    STR        R0, [ R2, TIM2T5_ARR ]

                    LDR        R0, = TIM2T5_CR1_CEN + TIM2T5_CR1_APRE    @ включить таймер
                    STR        R0, [ R2, TIM2T5_CR1 ]

                     @ настройка блока сравнения
                    LDR        R0, = TIM2T5_CCMR1_OC1M_PWM1    @ режим pwm 1
                    STR        R0, [ R2, TIM2T5_CCMR1 ]

                    LDR        R0, = 1    @ значение сравнения
                    STR        R0, [ R2, TIM2T5_CCR1 ]

                    LDR        R0, = TIM2T5_CCER_CC1E    @ включим выход  CH1
                    STR        R0, [ R2, TIM2T5_CCER ]

                    BX         LR

