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 |