pure assembly STM32 programming examples and boilerplates for masochists
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

34 lines
860 B

;;;-------------------------------------------------
;; Configure GPIO
;;
Cfg_GPIO PROC
PUSH {R0, R1, R2, LR}
; !!! If you don't like the register names,
; simply change them in the SFR file !!!
; Enable GPIO clocks
LDR R2, =RCC_AHBENR ; AHBENR address
LDR R1, [R2]
LDR R0, =RCC_AHBENR_GPIOPCEN ; GPIOC enable bit
ORR R1, R0
STR R1, [R2]
; Configure MODER
LDR R2, =GPIOC_MODER
LDR R1, [R2]
LDR R0, =(GPIO_MODER_MODER8 :OR: GPIO_MODER_MODER9); clear bits
BIC R1, R0
; Write "OUTPUT" pattern (0x5555...) masked to the two bits
LDR R0, =(GPIO_MODER_MODER8 :OR: GPIO_MODER_MODER9) & 0x55555555
ORR R1, R0
; Store modified value back to MODER
STR R1, [R2]
POP {R0, R1, R2, PC}
ENDP
;;
;;;-------------------------------------------------
END