Visual Memory Unit >> STM32F103 >> 1.5吋 TFT ST7789V 解析度240x240

超頻測試(128MHz)


HSE(8MHZ) * PLL_Mul(16倍) = 128MHz

rcc.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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
  .align 2
  .thumb_func
rcc_config:
  push {lr}
  bl rcc_deinit
  bl rcc_hseconfig
  bl rcc_waitforhsestartup
  bl flash_prefetchbuffercmd
  bl flash_setlatency
  bl rcc_hclkconfig
  bl rcc_pclk2config
  bl rcc_pclk1config
  bl rcc_pllconfig
  bl rcc_pllcmd
  bl rcc_sysclkconfig
  pop {pc}
 
  .align 2
  .thumb_func
rcc_deinit:
  push {lr}
  ldr r0, =RCC_APB2RSTR
  ldr r1, =0x00000000
  str r1, [r0]
   
  ldr r0, =RCC_APB1RSTR
  ldr r1, =0x00000000
  str r1, [r0]
   
  ldr r0, =RCC_AHBENR
  ldr r1, =0x00000014
  str r1, [r0]
   
  ldr r0, =RCC_APB2ENR
  ldr r1, =0x00000000
  str r1, [r0]
 
  ldr r0, =RCC_APB1ENR
  ldr r1, =0x00000000
  str r1, [r0]
   
  ldr r0, =RCC_CR
  ldr r1, [r0]
  orr r1, #0x00000001
  str r1, [r0]
 
  ldr r0, =RCC_CFGR
  ldr r1, [r0]
  ldr r2, =0xf8ff0000
  and r1, r2
  str r1, [r0]
 
  ldr r0, =RCC_CR
  ldr r1, [r0]
  ldr r2, =0xfef6ffff
  and r1, r2
  str r1, [r0]
   
  ldr r0, =RCC_CR
  ldr r1, [r0]
  and r1, #0xfffbffff
  str r1, [r0]
   
  ldr r0, =RCC_CFGR
  ldr r1, [r0]
  and r1, #0xff80ffff
  str r1, [r0]
   
  ldr r0, =RCC_CIR
  ldr r1, =0x00000000
  str r1, [r0]
  pop {pc}
 
  .align 2
  .thumb_func
rcc_hseconfig:
  push {lr}
  ldr r0, =RCC_CR
  ldr r1, [r0]
  and r1, #0xfffaffff
  orr r1, #0x00010000
  str r1, [r0]
  pop {pc}
   
  .align 2
  .thumb_func
rcc_waitforhsestartup:
  push {lr}
  ldr r0, =RCC_CR
0:
  ldr r1, [r0]
  and r1, #0x00020000
  cmp r1, #0x00020000
  bne 0b
  pop {pc}
 
  .align 2
  .thumb_func
rcc_hclkconfig:
  push {lr}
  ldr r0, =RCC_CFGR
  ldr r1, [r0]
  and r1, #0xffffff0f
  str r1, [r0]
  pop {pc}
   
  .align 2
  .thumb_func
rcc_pclk2config:
  push {lr}
  ldr r0, =RCC_CFGR
  ldr r1, [r0]
  and r1, #0xffffc7ff
  str r1, [r0]
  pop {pc}
   
  .align 2
  .thumb_func
rcc_pclk1config:
  push {lr}
  ldr r0, =RCC_CFGR
  ldr r1, [r0]
  and r1, #0xfffff8ff
  orr r1, #0x00000400
  str r1, [r0]
  pop {pc}
   
  .align 2
  .thumb_func
rcc_pllconfig:
  push {lr}
  ldr r0, =RCC_CFGR
  ldr r1, [r0]
  and r1, #0xffc0ffff
  orr r1, #0x00190000 @ 8MHz*8 = 64MHz
  @orr r1, #0x001d0000 @ 8MHz*9 = 72MHz
  @orr r1, #0x003d0000 @ 8MHz*16 = 128MHz
  str r1, [r0]
  pop {pc}
   
  .align 2
  .thumb_func
rcc_pllcmd:
  push {lr}
  ldr r0, =RCC_CR
  ldr r1, [r0]
  orr r1, #0x01000000
  str r1, [r0]
0:
  ldr r1, [r0]
  and r1, #0x02000000
  cmp r1, #0x02000000
  bne 0b
  pop {pc}
 
  .align 2
  .thumb_func
rcc_sysclkconfig:
  push {lr}
  ldr r0, =RCC_CFGR
  ldr r1, [r0]
  and r1, #0xfffffffc
  orr r1, #0x00000002
  str r1, [r0]
0:
  ldr r1, [r0]
  and r1, #0x00000008
  cmp r1, #0x00000008
  bne 0b
  pop {pc}
  .end

flash.s

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  .align
  .thumb_func
flash_prefetchbuffercmd:
  push {lr}
  ldr r0, =FLASH_ACR
  ldr r1, [r0]
  and r1, #0xffffffef
  orr r1, #0x00000010
  str r1, [r0]
  pop {pc}
   
  .align
  .thumb_func
flash_setlatency:
  push {lr}
  ldr r0, =FLASH_ACR
  ldr r1, [r0]
  and r1, #0x00000038
  orr r1, #0x00000002
  str r1, [r0]
  pop {pc}
  .end

調用

1
2
3
4
  .align 2
  .thumb_func
main:
  bl rcc_config


返回上一頁