@.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=TIM2_CH1_PWM_INIT type=proc
@ +--------------------------------------------------------+
@ |                                                        |
@ |             Настройка Timer 2 в режим PWM              |
@ |                  для генерации звука                   |
@ |                                                        |
@ +--------------------------------------------------------+
@.enddesc

.SECTION .asmcode

.global TIM2_CH1_PWM_INIT
TIM2_CH1_PWM_INIT:

                         MOV         R1, 1

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

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

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

                         LDR         R0, = 1000                 @ максимальное значение счетчика
                         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 для OC1M ( CH1 )
                         STR         R0, [ R2, TIM2T5_CCMR1 ]

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

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

                         BX         LR
