@.CharSet=CP1251
@GNU AS
@ +--------------------------------------------------------+
@ |     STM32F030 DEMO BOARD   |
@ |             STM32F030F4P6               |
@ |            (  )                |
@ |              DegitalSlavik (Telegram)                |
@ +--------------------------------------------------------+
@ |                        |
@ |                           SysTick                      |
@ |                                                        |
@ |  : GPIOA                               |
@ |  : 4 ( )              |
@ |                                                        |
@ +--------------------------------------------------------+
.syntax unified     @   
.thumb              @    Thumb
.cpu cortex-m0      @ 

.include "/src/inc/rcc.inc"
.include "/src/inc/gpio.inc"
.INCLUDE "/src/inc/stk.inc"

.section .asmcode

@  
.GLOBAL IRQ_SysTick
IRQ_SysTick:
                    LDR       R0, =GPIOA
                    LDR       R1, [R0, GPIO_ODR]
                    LDR       R2, =16
                    ANDS      R1, R1, R2
                    BNE       LED1

                    LDR       R2, =GPIO_BSRR_BS_4
LED2:
                    STR       R2, [R0, GPIO_BSRR]
                    BX        LR

LED1:               LDR       R2, =GPIO_BSRR_BR_4
                    B         LED2

.GLOBAL   Start
Start:
                    LDR        R0, = RCC + RCC_AHBENR    @    R0   RCC_AHBENR
                    LDR        R1, [ R0 ]                @    R1     ,    R0
                    LDR        R2, = RCC_AHBENR_IOPAEN   @    R2   IOPAENR  RCC_AHBENR
                    ORRS       R1, R1, R2                @   OR   R1  R2,    R2 (    IOPAEN)
                                                         @ ..   GPIOA
                    STR        R1, [ R0 ]                @   R1         R0 (    RCC_AHBENR)
                                                         @         RCC_AHBENR
                    LDR        R0, = GPIOA               @   R0   GPIOA
                    LDR        R1, [ R0, GPIO_MODER ]    @   R1  GPIOA   GPIO_MODER -     R1  GPIOA_MODER
                    LDR        R2, = GPIO_MODER_GENERAL_OUT << GPIO_MODER_4_N  @ PA4   
                    ORRS       R1, R1, R2                @ R1 OR R2 ->  OR  R1  R2 -   R1
                    STR        R1, [ R0, GPIO_MODER ]    @     

                    LDR       R2, =GPIO_BSRR_BS_4
                    STR       R2, [R0, GPIO_BSRR]
@ Systik
                    @------  SysTick (STK)
                    LDR R0, =STK
                    LDR R1, =STK_CSR_CLKSOURCE+STK_CSR_ENABLE+STK_CSR_TICKINT
                    STR R1, [R0,STK_CSR]
                    @-------   RVR 
                    LDR R1, =0x400000
                    STR R1, [R0, STK_RVR]

loop:               B          loop                      @    loop ( )





