@.CharSet=CP1251
@GNU AS

@.DESC type=module
@ +------------------------------------------------------------------------------+
@ |                                                            |
@ |                          EXTI                     |
@ |                                                                              |
@ |     STM32F4xxx      MiniSTM32F401          |
@ +------------------------------------------------------------------------------+
@ |                                                                              |
@ |     User\WakeUp   LED_ChangeState  - |
@ |                                         |
@ |                                                                              |
@ |  !                                                                   }
@ }         isr.asm    |
@ | ( Core + Periph )                                                            |
@ |                                                                              |
@ +------------------------------------------------------------------------------+
@ |    MiniSTM32F401    GPIOA pin 0            |
@ |     GPIOA pin 0                               |
@ |    GPIOC pin 13,          |
@ |                                             |
@ +------------------------------------------------------------------------------+


.syntax unified     @   
.thumb              @    Thumb
.cpu cortex-m4      @ 
.fpu fpv4-sp-d16    @ 


.section .asmcode

@  
.global Start
Start:
                    @   
                    BL   SYSCLK84_START

.include  "/src/periph/rcc/rcc_ahb1enr_gpio_set.inc"    @    GPIO
.include  "/src/periph/gpio/gpio_a_conf.inc"            @  GPIOA
.include  "/src/periph/gpio/gpio_c_conf.inc"            @  GPIOC

                    BL         EXTI_PA0_INIT    @  EXTI  GPIOA pin 0

                    @  R6 -    
                    @            R5 -    
                    LDR        R6, =  PERIPH_BB_BASE + ( GPIOC_BASE + GPIO_ODR ) * 32
                    MOV        R5, 1
                    STR        R5, [ R6, 13 * 4 ]

MAIN_LOOP:          B    MAIN_LOOP


@.desc name=LED_ChangeState type=proc
@ +--------------------------------------------------------------------------------+
@ |       ,    EXTI0    |
@ +--------------------------------------------------------------------------------+
@.enddesc

.global LED_ChangeState
LED_ChangeState:
                    @ R5  R6     ,         
                    CMP        R5, 0                        @ if R5=0
                    ITE        EQ                           @
                    MOVEQ      R5, 1                        @    then R5=1
                    MOVNE      R5, 0                        @    else R5=0

                    STR        R5, [ R6, 13 * 4 ]           @    

                    BX         LR
