Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- .data
- .include "bh_tm4c123gh6pm.h"
- .thumb
- .global main
- main:
- bl GPIO_Init
- ldr R0, GPIO_PORTF_DATA_R
- ldr R1, GPIO_PORTE_DATA_R
- flash:
- mov R5, #0
- mov R8, #0x200000
- mov R2, #0x3E
- str R2, [R0]
- str R2, [R1]
- bl delay
- mov R5, #0
- mov R8, #0x200000
- mov R3, #0x00
- str R3, [R1]
- str R3, [R0]
- bl delay
- B flash
- delay:
- add R5, R5, #1
- cmp R5, R8
- bne delay
- bx lr
- loop:
- nop
- B loop
- .end
- GPIO_Init:
- ; 1) activate clock
- ldr R1, SYSCTL_RCGCGPIO_R
- ldr R0, [R1]
- ldr R2, SYSCTL_RCGC2_GPIOF
- orr R0, R0, R2 ; clock
- str R0, [R1]
- ldr R2, SYSCTL_RCGC2_GPIOE
- orr R0, R0, R2 ; clock
- str R0, [R1]
- nop ; allow time extra time
- nop
- ; 2) unlock
- ldr R0, GPIO_LOCK_KEY
- ldr R1, GPIO_PORTF_LOCK_R
- str R0, [R1]
- ldr R0, GPIO_PORTF_CR_R
- mov R1, #0x1F
- str R1, [R0]
- ldr R0, GPIO_LOCK_LOCKED
- ldr R1, GPIO_PORTF_LOCK_R
- str R0, [R1]
- ; 3) disable analog functionality
- ldr R1, GPIO_PORTF_AMSEL_R
- ldr R0, [R1]
- bic R0, R0, #0x1F
- str R0, [R1]
- ldr R1, GPIO_PORTE_AMSEL_R
- ldr R0, [R1]
- bic R0, R0, #0x3E
- str R0, [R1]
- ; 4) configure as GPIO
- ldr R1, GPIO_PORTF_PCTL_R
- ldr R0, [R1]
- mov R3, #0x000F
- lsl R2, R3, #0x10
- mov R3, #0xFFFF
- add R2, R2, R3
- bic R0, R0, R2
- str R0, [R1]
- ldr R1, GPIO_PORTE_PCTL_R
- ldr R0, [R1]
- mov R3, #0x000E
- lsl R2, R3, #0x30
- mov R3, #0xFFFF
- add R2, R2, R3
- bic R0, R0, R2
- str R0, [R1]
- ; 5) set direction register
- ldr R1, GPIO_PORTF_DIR_R
- ldr R0, [R1]
- orr R0, R0, #0x0E
- str R0, [R1]
- ldr R1, GPIO_PORTE_DIR_R
- ldr R0, [R1]
- orr R0, R0, #0x3E
- str R0, [R1]
- ; 6) port function
- ldr R1, GPIO_PORTF_AFSEL_R
- ldr R0, [R1]
- bic R0, R0, #0x1F
- str R0, [R1]
- ldr R1, GPIO_PORTE_AFSEL_R
- ldr R0, [R1]
- bic R0, R0, #0x3E
- str R0, [R1]
- ; pull-up resistors
- ldr R1, GPIO_PORTF_PUR_R
- ldr R0, [R1]
- orr R0, R0, #0x11
- str R0, [R1]
- ; enable 8mA drive
- ldr R1, GPIO_PORTF_DR8R_R
- ldr R0, [R1]
- orr R0, R0, #0x1F
- str R0, [R1]
- ; 7) enable digital port
- ldr R1, GPIO_PORTF_DEN_R
- ldr R0, [R1]
- orr R0, R0, #0x1F
- str R0, [R1]
- ldr R1, GPIO_PORTE_DEN_R
- ldr R0, [R1]
- orr R0, R0, #0x3E
- str R0, [R1]
- bx LR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement