@.CHARSET  CP1251

@ GNU AS
.SYNTAX   unified
.CPU      cortex-m4
.THUMB
.FPU      fpv4-sp-d16

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

@.DESC     name=TIM4_INIT type=proc
@ +--------------------------------------------------------+
@ |                                                        |
@ |     Настройка Timer 4 для генерации запросов DMA       |
@ |                    4 раза в секунду                    |
@ |                                                        |
@ +--------------------------------------------------------+
@.ENDDESC

.SECTION  .asmcode

.GLOBAL   TIM4_INIT
TIM4_INIT:

                    MOV        R1, 1

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

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

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

                    LDR        R0, = 100    @ максимальное значение счетчика (переполнение 10 раз в секунду)
                    STR        R0, [ R2, TIM2T5_ARR ]

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

                @ включим генерацию DMA запроса по переполнению счетчика
                    MOV        R0, TIM2T5_DIER_UDE
                    STR        R0, [ R2, TIM2T5_DIER ]

                    BX         LR

