📄 stm32f10x_sdio.lst
字号:
315 SDIO->MASK |= SDIO_IT;
\ 00000006 .... LDR.N R2,??DataTable26_9 ;; 0x4001803c
\ 00000008 1268 LDR R2,[R2, #+0]
\ 0000000A 0243 ORRS R2,R0,R2
\ 0000000C .... LDR.N R3,??DataTable26_9 ;; 0x4001803c
\ 0000000E 1A60 STR R2,[R3, #+0]
\ 00000010 04E0 B.N ??SDIO_ITConfig_1
316 }
317 else
318 {
319 /* Disable the SDIO interrupts */
320 SDIO->MASK &= ~SDIO_IT;
\ ??SDIO_ITConfig_0:
\ 00000012 .... LDR.N R2,??DataTable26_9 ;; 0x4001803c
\ 00000014 1268 LDR R2,[R2, #+0]
\ 00000016 8243 BICS R2,R2,R0
\ 00000018 .... LDR.N R3,??DataTable26_9 ;; 0x4001803c
\ 0000001A 1A60 STR R2,[R3, #+0]
321 }
322 }
\ ??SDIO_ITConfig_1:
\ 0000001C 7047 BX LR ;; return
323
324 /**
325 * @brief Enables or disables the SDIO DMA request.
326 * @param NewState: new state of the selected SDIO DMA request.
327 * This parameter can be: ENABLE or DISABLE.
328 * @retval None
329 */
\ In section .text, align 2, keep-with-next
330 void SDIO_DMACmd(FunctionalState NewState)
331 {
332 /* Check the parameters */
333 assert_param(IS_FUNCTIONAL_STATE(NewState));
334
335 *(__IO uint32_t *) DCTRL_DMAEN_BB = (uint32_t)NewState;
\ SDIO_DMACmd:
\ 00000000 .... LDR.N R1,??DataTable26_12 ;; 0x4230058c
\ 00000002 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000004 0860 STR R0,[R1, #+0]
336 }
\ 00000006 7047 BX LR ;; return
337
338 /**
339 * @brief Initializes the SDIO Command according to the specified
340 * parameters in the SDIO_CmdInitStruct and send the command.
341 * @param SDIO_CmdInitStruct : pointer to a SDIO_CmdInitTypeDef
342 * structure that contains the configuration information for the SDIO command.
343 * @retval None
344 */
\ In section .text, align 2, keep-with-next
345 void SDIO_SendCommand(SDIO_CmdInitTypeDef *SDIO_CmdInitStruct)
346 {
347 uint32_t tmpreg = 0;
\ SDIO_SendCommand:
\ 00000000 0021 MOVS R1,#+0
348
349 /* Check the parameters */
350 assert_param(IS_SDIO_CMD_INDEX(SDIO_CmdInitStruct->SDIO_CmdIndex));
351 assert_param(IS_SDIO_RESPONSE(SDIO_CmdInitStruct->SDIO_Response));
352 assert_param(IS_SDIO_WAIT(SDIO_CmdInitStruct->SDIO_Wait));
353 assert_param(IS_SDIO_CPSM(SDIO_CmdInitStruct->SDIO_CPSM));
354
355 /*---------------------------- SDIO ARG Configuration ------------------------*/
356 /* Set the SDIO Argument value */
357 SDIO->ARG = SDIO_CmdInitStruct->SDIO_Argument;
\ 00000002 .... LDR.N R2,??DataTable26_2 ;; 0x40018008
\ 00000004 0368 LDR R3,[R0, #+0]
\ 00000006 1360 STR R3,[R2, #+0]
358
359 /*---------------------------- SDIO CMD Configuration ------------------------*/
360 /* Get the SDIO CMD value */
361 tmpreg = SDIO->CMD;
\ 00000008 .... LDR.N R2,??DataTable26_3 ;; 0x4001800c
\ 0000000A 1268 LDR R2,[R2, #+0]
\ 0000000C 1100 MOVS R1,R2
362 /* Clear CMDINDEX, WAITRESP, WAITINT, WAITPEND, CPSMEN bits */
363 tmpreg &= CMD_CLEAR_MASK;
\ 0000000E C90A LSRS R1,R1,#+11
\ 00000010 C902 LSLS R1,R1,#+11
364 /* Set CMDINDEX bits according to SDIO_CmdIndex value */
365 /* Set WAITRESP bits according to SDIO_Response value */
366 /* Set WAITINT and WAITPEND bits according to SDIO_Wait value */
367 /* Set CPSMEN bits according to SDIO_CPSM value */
368 tmpreg |= (uint32_t)SDIO_CmdInitStruct->SDIO_CmdIndex | SDIO_CmdInitStruct->SDIO_Response
369 | SDIO_CmdInitStruct->SDIO_Wait | SDIO_CmdInitStruct->SDIO_CPSM;
\ 00000012 4268 LDR R2,[R0, #+4]
\ 00000014 8368 LDR R3,[R0, #+8]
\ 00000016 1A43 ORRS R2,R3,R2
\ 00000018 C368 LDR R3,[R0, #+12]
\ 0000001A 1A43 ORRS R2,R3,R2
\ 0000001C 0369 LDR R3,[R0, #+16]
\ 0000001E 1A43 ORRS R2,R3,R2
\ 00000020 1143 ORRS R1,R2,R1
370
371 /* Write to SDIO CMD */
372 SDIO->CMD = tmpreg;
\ 00000022 .... LDR.N R2,??DataTable26_3 ;; 0x4001800c
\ 00000024 1160 STR R1,[R2, #+0]
373 }
\ 00000026 7047 BX LR ;; return
374
375 /**
376 * @brief Fills each SDIO_CmdInitStruct member with its default value.
377 * @param SDIO_CmdInitStruct: pointer to an SDIO_CmdInitTypeDef
378 * structure which will be initialized.
379 * @retval None
380 */
\ In section .text, align 2, keep-with-next
381 void SDIO_CmdStructInit(SDIO_CmdInitTypeDef* SDIO_CmdInitStruct)
382 {
383 /* SDIO_CmdInitStruct members default value */
384 SDIO_CmdInitStruct->SDIO_Argument = 0x00;
\ SDIO_CmdStructInit:
\ 00000000 0021 MOVS R1,#+0
\ 00000002 0160 STR R1,[R0, #+0]
385 SDIO_CmdInitStruct->SDIO_CmdIndex = 0x00;
\ 00000004 0021 MOVS R1,#+0
\ 00000006 4160 STR R1,[R0, #+4]
386 SDIO_CmdInitStruct->SDIO_Response = SDIO_Response_No;
\ 00000008 0021 MOVS R1,#+0
\ 0000000A 8160 STR R1,[R0, #+8]
387 SDIO_CmdInitStruct->SDIO_Wait = SDIO_Wait_No;
\ 0000000C 0021 MOVS R1,#+0
\ 0000000E C160 STR R1,[R0, #+12]
388 SDIO_CmdInitStruct->SDIO_CPSM = SDIO_CPSM_Disable;
\ 00000010 0021 MOVS R1,#+0
\ 00000012 0161 STR R1,[R0, #+16]
389 }
\ 00000014 7047 BX LR ;; return
390
391 /**
392 * @brief Returns command index of last command for which response received.
393 * @param None
394 * @retval Returns the command index of the last command response received.
395 */
\ In section .text, align 2, keep-with-next
396 uint8_t SDIO_GetCommandResponse(void)
397 {
398 return (uint8_t)(SDIO->RESPCMD);
\ SDIO_GetCommandResponse:
\ 00000000 .... LDR.N R0,??DataTable26_13 ;; 0x40018010
\ 00000002 0068 LDR R0,[R0, #+0]
\ 00000004 C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 00000006 7047 BX LR ;; return
399 }
400
401 /**
402 * @brief Returns response received from the card for the last command.
403 * @param SDIO_RESP: Specifies the SDIO response register.
404 * This parameter can be one of the following values:
405 * @arg SDIO_RESP1: Response Register 1
406 * @arg SDIO_RESP2: Response Register 2
407 * @arg SDIO_RESP3: Response Register 3
408 * @arg SDIO_RESP4: Response Register 4
409 * @retval The Corresponding response register value.
410 */
\ In section .text, align 2, keep-with-next
411 uint32_t SDIO_GetResponse(uint32_t SDIO_RESP)
412 {
\ SDIO_GetResponse:
\ 00000000 81B0 SUB SP,SP,#+4
\ 00000002 0100 MOVS R1,R0
413 __IO uint32_t tmp = 0;
\ 00000004 0020 MOVS R0,#+0
\ 00000006 0090 STR R0,[SP, #+0]
414
415 /* Check the parameters */
416 assert_param(IS_SDIO_RESP(SDIO_RESP));
417
418 tmp = SDIO_RESP_ADDR + SDIO_RESP;
\ 00000008 .... LDR.N R0,??DataTable26_14 ;; 0x40018014
\ 0000000A 4018 ADDS R0,R0,R1
\ 0000000C 0090 STR R0,[SP, #+0]
419
420 return (*(__IO uint32_t *) tmp);
\ 0000000E 0098 LDR R0,[SP, #+0]
\ 00000010 0068 LDR R0,[R0, #+0]
\ 00000012 01B0 ADD SP,SP,#+4
\ 00000014 7047 BX LR ;; return
421 }
422
423 /**
424 * @brief Initializes the SDIO data path according to the specified
425 * parameters in the SDIO_DataInitStruct.
426 * @param SDIO_DataInitStruct : pointer to a SDIO_DataInitTypeDef structure that
427 * contains the configuration information for the SDIO command.
428 * @retval None
429 */
\ In section .text, align 2, keep-with-next
430 void SDIO_DataConfig(SDIO_DataInitTypeDef* SDIO_DataInitStruct)
431 {
432 uint32_t tmpreg = 0;
\ SDIO_DataConfig:
\ 00000000 0021 MOVS R1,#+0
433
434 /* Check the parameters */
435 assert_param(IS_SDIO_DATA_LENGTH(SDIO_DataInitStruct->SDIO_DataLength));
436 assert_param(IS_SDIO_BLOCK_SIZE(SDIO_DataInitStruct->SDIO_DataBlockSize));
437 assert_param(IS_SDIO_TRANSFER_DIR(SDIO_DataInitStruct->SDIO_TransferDir));
438 assert_param(IS_SDIO_TRANSFER_MODE(SDIO_DataInitStruct->SDIO_TransferMode));
439 assert_param(IS_SDIO_DPSM(SDIO_DataInitStruct->SDIO_DPSM));
440
441 /*---------------------------- SDIO DTIMER Configuration ---------------------*/
442 /* Set the SDIO Data TimeOut value */
443 SDIO->DTIMER = SDIO_DataInitStruct->SDIO_DataTimeOut;
\ 00000002 .... LDR.N R2,??DataTable26_4 ;; 0x40018024
\ 00000004 0368 LDR R3,[R0, #+0]
\ 00000006 1360 STR R3,[R2, #+0]
444
445 /*---------------------------- SDIO DLEN Configuration -----------------------*/
446 /* Set the SDIO DataLength value */
447 SDIO->DLEN = SDIO_DataInitStruct->SDIO_DataLength;
\ 00000008 4268 LDR R2,[R0, #+4]
\ 0000000A .... LDR.N R3,??DataTable26_5 ;; 0x40018028
\ 0000000C 1A60 STR R2,[R3, #+0]
448
449 /*---------------------------- SDIO DCTRL Configuration ----------------------*/
450 /* Get the SDIO DCTRL value */
451 tmpreg = SDIO->DCTRL;
\ 0000000E .... LDR.N R2,??DataTable26_6 ;; 0x4001802c
\ 00000010 1268 LDR R2,[R2, #+0]
\ 00000012 1100 MOVS R1,R2
452 /* Clear DEN, DTMODE, DTDIR and DBCKSIZE bits */
453 tmpreg &= DCTRL_CLEAR_MASK;
\ 00000014 31F0F701 BICS R1,R1,#0xF7
454 /* Set DEN bit according to SDIO_DPSM value */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -