-
Notifications
You must be signed in to change notification settings - Fork 0
/
Init_PortF.s
87 lines (70 loc) · 2.56 KB
/
Init_PortF.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
;***************************************
;Init_PortF.s source file to implement
;initialization
;***************************************
;Definition of the labels standing for the
;address of the registers
SYSCTL_RCGCGPIO_R EQU 0x400FE608 ; GPIO Run Mode Clock Gating Control
GPIO_PORTF_LOCK_R EQU 0x40025520 ; GPIO PortF Lock
GPIO_PORTF_CR_R EQU 0x40025524 ; GPIO PortF Commit
GPIO_PORTF_AMSEL_R EQU 0x40025528 ; GPIO PortF Analog Mode Select
GPIO_PORTF_PCTL_R EQU 0x4002552C ; GPIO PortF Port Control
GPIO_PORTF_DIR_R EQU 0x40025400 ; GPIO PortF Direction
GPIO_PORTF_AFSEL_R EQU 0x40025420 ; GPIO PortF Alternative Function Select
GPIO_PORTF_PUR_R EQU 0x40025510 ; GPIO PortF Pull-up
GPIO_PORTF_DEN_R EQU 0x4002551C ; GPIO PortF Digital Enable
;***************************************
;Initialization Area
;***************************************
; This PortF initialization is used to enable PF0(SW2) and PF4(SW1)
; and PF1(Red LED), PF2(Blue LED), PF3(Green LED) pins of the TM4C
; for the recording and replay purposes
AREA init_portf , READONLY , CODE , ALIGN=2
THUMB
EXPORT Init_PortF
Init_PortF
PUSH {LR}
PUSH {R0}
PUSH {R1}
;unlock GPIO PortF (only PF0 needs to be unlocked other bits can't be locked)
LDR R1,=GPIO_PORTF_LOCK_R
LDR R0,=0x4C4F434B ; This value is written to unlock
STR R0,[R1]
;allow changes to all PortF pins
LDR R1,=GPIO_PORTF_CR_R
LDR R0,=0x1F
STR R0,[R1]
;disable analog function for all PortF pins
LDR R1,=GPIO_PORTF_AMSEL_R
LDR R0,[R1]
BIC R0,R0,#0x1F
STR R0,[R1]
;use regular GPIO function for all PortF pins
LDR R1,=GPIO_PORTF_PCTL_R
LDR R0,[R1]
BIC R0,R0,#0x1F
STR R0,[R1]
;set PF4 and PF0 as input - set PF1,PF2,PF3 as output
LDR R1,=GPIO_PORTF_DIR_R
LDR R0,[R1]
ORR R0,R0,#0x0E
STR R0,[R1]
;disable alternate functions for all PortF pins
LDR R1,=GPIO_PORTF_AFSEL_R
LDR R0,[R1]
BIC R0,R0,#0x1F
STR R0,[R1]
;enable pull-up on PF4 and PF0
LDR R1,=GPIO_PORTF_PUR_R
LDR R0,[R1]
ORR R0,R0,#0x11
STR R0,[R1]
;enable digital function for all PortF pins
LDR R1,=GPIO_PORTF_DEN_R
LDR R0,[R1]
ORR R0,R0,#0x1F
STR R0,[R1]
POP {R1}
POP {R0}
POP {LR}
BX LR ; return