📄 hw_config.s79
字号:
MOVS R0,#+1024
_BLF RCC_PCLK1Config,??RCC_PCLK1Config??rT
// 75
// 76 /* ADCCLK = PCLK2/6 */
// 77 RCC_ADCCLKConfig(RCC_PCLK2_Div6);
MOVS R0,#+32768
_BLF RCC_ADCCLKConfig,??RCC_ADCCLKConfig??rT
// 78
// 79 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
MOVS R1,#+1835008
MOVS R0,#+65536
_BLF RCC_PLLConfig,??RCC_PLLConfig??rT
// 80
// 81 /* Enable PLL */
// 82 RCC_PLLCmd(ENABLE);
MOVS R0,#+1
_BLF RCC_PLLCmd,??RCC_PLLCmd??rT
// 83
// 84 /* Wait till PLL is ready */
// 85 while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
??Set_System_2:
MOVS R0,#+57
_BLF RCC_GetFlagStatus,??RCC_GetFlagStatus??rT
CMP R0,#+0
BEQ.N ??Set_System_2
// 86 {}
// 87
// 88 /* Select PLL as system clock source */
// 89 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
MOVS R0,#+2
_BLF RCC_SYSCLKConfig,??RCC_SYSCLKConfig??rT
// 90
// 91 /* Wait till PLL is used as system clock source */
// 92 while (RCC_GetSYSCLKSource() != 0x08)
??Set_System_3:
_BLF RCC_GetSYSCLKSource,??RCC_GetSYSCLKSource??rT
CMP R0,#+8
BNE.N ??Set_System_3
// 93 {}
// 94 }
// 95
// 96 /* Enable GPIOA, GPIOD and USART1 clock */
// 97 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD
// 98 | RCC_APB2Periph_USART1, ENABLE);
??Set_System_1:
LDR.N R0,??Set_System_0+0x4 ;; 0x4024
// 99
// 100 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
// 101
// 102 /* Enable USB_DISCONNECT GPIO clock */
// 103 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_DISCONNECT, ENABLE);
// 104
// 105 /* Configure USB pull-up pin */
// 106 GPIO_InitStructure.GPIO_Pin = USB_DISCONNECT_PIN;
// 107 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// 108 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
// 109 GPIO_Init(USB_DISCONNECT, &GPIO_InitStructure);
LDR.N R5,??DataTable3 ;; 0x40010c00
// 110
// 111 /* Configure USART1 Rx (PA.10) as input floating */
// 112 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
// 113 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
// 114 GPIO_Init(GPIOA, &GPIO_InitStructure);
LDR.N R6,??Set_System_0+0x8 ;; 0x40010800
MOVS R1,#+1
_BLF RCC_APB2PeriphClockCmd,??RCC_APB2PeriphClockCmd??rT
MOVS R1,#+1
MOVS R0,#+2
_BLF RCC_APB1PeriphClockCmd,??RCC_APB1PeriphClockCmd??rT
MOVS R1,#+1
MOVS R0,#+8
_BLF RCC_APB2PeriphClockCmd,??RCC_APB2PeriphClockCmd??rT
MOVS R0,#+16384
STRH R0,[SP, #+0]
MOVS R0,#+3
STRB R0,[SP, #+2]
MOVS R0,#+20
STRB R0,[SP, #+3]
MOV R1,SP
MOVS R0,R5
_BLF GPIO_Init,??GPIO_Init??rT
LSRS R0,R5,#+20
STRH R0,[SP, #+0]
MOVS R0,#+4
STRB R0,[SP, #+3]
MOV R1,SP
MOVS R0,R6
_BLF GPIO_Init,??GPIO_Init??rT
MOVS R4,#+3
// 115
// 116 /* Configure USART1 Tx (PA.09) as alternate function push-pull */
// 117 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
LSRS R7,R5,#+21
STRH R7,[SP, #+0]
// 118 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
MOV R0,R4
STRB R0,[SP, #+2]
// 119 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
MOVS R0,#+24
STRB R0,[SP, #+3]
// 120 GPIO_Init(GPIOA, &GPIO_InitStructure);
MOV R1,SP
MOVS R0,R6
_BLF GPIO_Init,??GPIO_Init??rT
// 121
// 122 /* Configure GPIO channe1 output pin */
// 123 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
// 124 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// 125 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
MOVS R0,#+16
STRH R7,[SP, #+0]
STRB R4,[SP, #+2]
STRB R0,[SP, #+3]
// 126 GPIO_Init(GPIOB, &GPIO_InitStructure);
MOV R1,SP
MOVS R0,R5
_BLF GPIO_Init,??GPIO_Init??rT
// 127 }
POP {R0,R4-R7,PC} ;; return
DATA
??Set_System_0:
DC32 HSEStartUpStatus
DC32 0x4024
DC32 0x40010800
CFI EndBlock cfiBlock0
// 128
// 129 /*******************************************************************************
// 130 * Function Name : Set_USBClock
// 131 * Description : Configures USB Clock input (48MHz)
// 132 * Input : None.
// 133 * Return : None.
// 134 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock1 Using cfiCommon0
CFI Function Set_USBClock
THUMB
// 135 void Set_USBClock(void)
// 136 {
Set_USBClock:
PUSH {LR}
CFI ?RET Frame(CFA, -4)
CFI CFA R13+4
// 137 /* USBCLK = PLLCLK / 1.5 */
// 138 RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);
MOVS R0,#+0
_BLF RCC_USBCLKConfig,??RCC_USBCLKConfig??rT
// 139 /* Enable USB clock */
// 140 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);
MOVS R1,#+1
LSLS R0,R1,#+23
POP {LR} ;; Pop
CFI ?RET R14
CFI CFA R13+0
_BF.W RCC_APB1PeriphClockCmd,??RCC_APB1PeriphClockCmd??rT
CFI EndBlock cfiBlock1
// 141 }
// 142
// 143 /*******************************************************************************
// 144 * Function Name : Enter_LowPowerMode
// 145 * Description : Power-off system clocks and power while entering suspend mode
// 146 * Input : None.
// 147 * Return : None.
// 148 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock2 Using cfiCommon0
CFI Function Enter_LowPowerMode
THUMB
// 149 void Enter_LowPowerMode(void)
// 150 {
// 151 /* Set the device state to suspend */
// 152 bDeviceState = SUSPENDED;
Enter_LowPowerMode:
LDR.N R0,??DataTable2 ;; bDeviceState
MOVS R1,#+3
STR R1,[R0, #+0]
// 153 }
BX LR ;; return
CFI EndBlock cfiBlock2
// 154
// 155 /*******************************************************************************
// 156 * Function Name : Leave_LowPowerMode
// 157 * Description : Restores system clocks and power while exiting suspend mode
// 158 * Input : None.
// 159 * Return : None.
// 160 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock3 Using cfiCommon0
CFI Function Leave_LowPowerMode
THUMB
// 161 void Leave_LowPowerMode(void)
// 162 {
// 163 DEVICE_INFO *pInfo = &Device_Info;
// 164
// 165 /* Set the device state to the correct state */
// 166 if (pInfo->Current_Configuration != 0)
Leave_LowPowerMode:
LDR.N R1,??Leave_LowPowerMode_0 ;; Device_Info + 10
LDR.N R0,??DataTable2 ;; bDeviceState
LDRB R1,[R1, #+0]
CBZ R1,??Leave_LowPowerMode_1
// 167 {
// 168 /* Device configured */
// 169 bDeviceState = CONFIGURED;
MOVS R1,#+5
B.N ??Leave_LowPowerMode_2
// 170 }
// 171 else
// 172 {
// 173 bDeviceState = ATTACHED;
??Leave_LowPowerMode_1:
MOVS R1,#+1
??Leave_LowPowerMode_2:
STR R1,[R0, #+0]
// 174 }
// 175 }
BX LR ;; return
Nop
DATA
??Leave_LowPowerMode_0:
DC32 Device_Info + 10
CFI EndBlock cfiBlock3
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable2:
DC32 bDeviceState
// 176
// 177 /*******************************************************************************
// 178 * Function Name : USB_Interrupts_Config
// 179 * Description : Configures the USB interrupts
// 180 * Input : None.
// 181 * Return : None.
// 182 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock4 Using cfiCommon0
CFI Function USB_Interrupts_Config
THUMB
// 183 void USB_Interrupts_Config(void)
// 184 {
USB_Interrupts_Config:
PUSH {R0,R4,LR}
CFI ?RET Frame(CFA, -4)
CFI R4 Frame(CFA, -8)
CFI CFA R13+12
// 185 NVIC_InitTypeDef NVIC_InitStructure;
// 186
// 187 #ifdef VECT_TAB_RAM
// 188 /* Set the Vector Table base location at 0x20000000 */
// 189 NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
// 190 #else /* VECT_TAB_FLASH */
// 191 /* Set the Vector Table base location at 0x08000000 */
// 192 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
MOVS R1,#+0
MOVS R0,#+134217728
_BLF NVIC_SetVectorTable,??NVIC_SetVectorTable??rT
// 193 #endif
// 194
// 195 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
MOVS R0,#+1536
_BLF NVIC_PriorityGroupConfig,??NVIC_PriorityGroupConfig??rT
// 196
// 197 NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN_RX0_IRQChannel;
MOVS R0,#+20
STRB R0,[SP, #+0]
// 198 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
MOVS R4,#+1
MOVS R0,#+1
STRB R0,[SP, #+1]
// 199 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
MOVS R0,#+3
STRB R0,[SP, #+2]
// 200 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
MOV R0,R4
STRB R0,[SP, #+3]
// 201 NVIC_Init(&NVIC_InitStructure);
MOV R0,SP
_BLF NVIC_Init,??NVIC_Init??rT
// 202
// 203 /* Enable USART1 Interrupt */
// 204 NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;
MOVS R0,#+37
STRB R0,[SP, #+0]
// 205 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
MOVS R0,R4
STRB R0,[SP, #+1]
// 206 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;
MOVS R0,#+4
STRB R0,[SP, #+2]
// 207 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
MOVS R0,R4
STRB R0,[SP, #+3]
// 208 NVIC_Init(&NVIC_InitStructure);
MOV R0,SP
_BLF NVIC_Init,??NVIC_Init??rT
// 209
// 210 /* Enable the TIM3 gloabal Interrupt */
// 211 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel;
MOVS R0,#+29
STRB R0,[SP, #+0]
// 212 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
MOVS R0,R4
STRB R0,[SP, #+1]
// 213 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 5;
MOVS R0,#+5
STRB R0,[SP, #+2]
// 214 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
STRB R4,[SP, #+3]
// 215
// 216 NVIC_Init(&NVIC_InitStructure);
MOV R0,SP
_BLF NVIC_Init,??NVIC_Init??rT
// 217 }
POP {R0,R4,PC} ;; return
CFI EndBlock cfiBlock4
// 218
// 219 /*******************************************************************************
// 220 * Function Name : USB_Cable_Config
// 221 * Description : Software Connection/Disconnection of USB Cable
// 222 * Input : None.
// 223 * Return : Status
// 224 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock5 Using cfiCommon0
CFI Function USB_Cable_Config
THUMB
// 225 void USB_Cable_Config (FunctionalState NewState)
// 226 {
// 227 if (NewState != DISABLE)
USB_Cable_Config:
LDR.N R2,??DataTable3 ;; 0x40010c00
CBZ R0,??USB_Cable_Config_0
// 228 {
// 229 GPIO_ResetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);
MOVS R1,#+16384
MOVS R0,R2
_BF.W GPIO_ResetBits,??GPIO_ResetBits??rT
// 230 }
// 231 else
// 232 {
// 233 GPIO_SetBits(USB_DISCONNECT, USB_DISCONNECT_PIN);
??USB_Cable_Config_0:
MOVS R1,#+16384
MOVS R0,R2
_BF.W GPIO_SetBits,??GPIO_SetBits??rT
CFI EndBlock cfiBlock5
// 234 }
// 235 }
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable3:
DC32 0x40010c00
// 236
// 237 /*******************************************************************************
// 238 * Function Name : UART0_Config_Default.
// 239 * Description : configure the UART 0 with default values.
// 240 * Input : None.
// 241 * Return : None.
// 242 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock6 Using cfiCommon0
CFI Function USART_Config_Default
THUMB
// 243 void USART_Config_Default(void)
// 244 {
// 245 /* USART1 default configuration */
// 246 /* USART1 configured as follow:
// 247 - BaudRate = 9600 baud
// 248 - Word Length = 8 Bits
// 249 - One Stop Bit
// 250 - Parity Odd
// 251 - Hardware flow control desabled
// 252 - Receive and transmit enabled
// 253 */
// 254 USART_InitStructure.USART_BaudRate = 9600;
USART_Config_Default:
LDR.N R1,??DataTable6 ;; USART_InitStructure
PUSH {R4,LR}
CFI ?RET Frame(CFA, -4)
CFI R4 Frame(CFA, -8)
CFI CFA R13+8
// 255 USART_InitStructure.USART_WordLength = USART_WordLength_8b;
// 256 USART_InitStructure.USART_StopBits = USART_StopBits_1;
// 257 USART_InitStructure.USART_Parity = USART_Parity_Odd;
// 258 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
// 259 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
// 260
// 261 /* Configure the USART1 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -