@.CharSet=CP1251
@GNU AS
@ +--------------------------------------------------------+
@ |       STM32F030 DEMO BOARD |
@ |             STM32F030F4P6               |
@ |            (  )                |
@ +--------------------------------------------------------+
@ |                                       |
@ |                                                        |
@ |  : GPIOA                               |
@ |  : 4 ( )              |
@ |                                                        |
@ +--------------------------------------------------------+
.syntax unified     @   
.thumb              @    Thumb
.cpu cortex-m0      @ 
.include "/src/inc/rcc.inc"
.include "/src/inc/gpio.inc"
@ ----- SysTick---------
.EQU STK_CSR, 0xE000E010
.EQU STK_RVR, 0xE000E014
.EQU STK_CVR, 0xE000E018
.EQU STK_CALIB, 0xE000E01C
.EQU STK_CSR_ENABLE, 1<<0
.EQU STK_CSR_CLKSOURCE, 1<<2
.EQU STK_CSR_TICKINT, 1<<1
@----------------------------

.section .asmcode

.GLOBAL IRQ_SysTick
IRQ_SysTick:
                    LDR R0, =STK_CSR
                    LDR R1, [R0]
                    LDR R0, =GPIOA
                    LDR R1, [R0, GPIO_BSRR]             @  R1    BSRR
                    LDR R2, =GPIO_BSRR_BR_4
                    ORRS R1, R1, R2
                    STR R1, [R0]
                    BX LR

@  
.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       R0, =GPIOA
                    LDR       R1, [R0, GPIO_BSRR]
                    LDR       R2, =GPIO_BSRR_BS_4
                    ORRS      R1, R1, R2
                    STR       R1, [R0, GPIO_BSRR]
@ Systik
                    @------  STK_CSR   CLKSOURCE     
                    LDR R0, =STK_CSR
                    LDR R1, [R0]
                    LDR R2, =STK_CSR_CLKSOURCE
                    ORRS R1, R1, R2
                    STR R1, [R0]
                    @-------   RVR 
                    LDR R0, =STK_RVR
                    LDR R1, =0x100000
                    STR R1, [R0]
                    @------  STK_CSR    SYSTICK--------------------------------
                    LDR R0, =STK_CSR
                    LDR R1, [R0]
                    LDR R2, =STK_CSR_ENABLE
                    ORRS R1, R1, R2
                    STR R1, [R0]
                    @------  STK_CSR     --------------------------------
                    LDR R0, =STK_CSR
                    LDR R1, [R0]
                    LDR R2, =STK_CSR_TICKINT
                    ORRS R1, R1, R2
                    STR R1, [R0]

loop:

                    B          loop                      @    loop ( )





