📄 stm32f10x_sdio.txt
字号:
;;;429 /*---------------------------- SDIO DCTRL Configuration ----------------------*/
;;;430 /* Get the SDIO DCTRL value */
;;;431 tmpreg = SDIO->DCTRL;
00000c 6aca LDR r2,[r1,#0x2c]
;;;432
;;;433 /* Clear DEN, DTMODE, DTDIR and DBCKSIZE bits */
;;;434 tmpreg &= DCTRL_CLEAR_MASK;
;;;435 /* Set DEN bit according to SDIO_DPSM value */
;;;436 /* Set DTMODE bit according to SDIO_TransferMode value */
;;;437 /* Set DTDIR bit according to SDIO_TransferDir value */
;;;438 /* Set DBCKSIZE bits according to SDIO_DataBlockSize value */
;;;439 tmpreg |= (u32)SDIO_DataInitStruct->SDIO_DataBlockSize | SDIO_DataInitStruct->SDIO_TransferDir
00000e e9d0e9d0 LDRD r5,r4,[r0,#0xc]
000012 6883 LDR r3,[r0,#8]
000014 6940 LDR r0,[r0,#0x14]
000016 432b ORRS r3,r3,r5
000018 4304 ORRS r4,r4,r0
00001a f022f022 BIC r2,r2,#0xf7 ;434
00001e 4323 ORRS r3,r3,r4
000020 4313 ORRS r3,r3,r2
;;;440 | SDIO_DataInitStruct->SDIO_TransferMode | SDIO_DataInitStruct->SDIO_DPSM;
;;;441
;;;442 /* Write to SDIO DCTRL */
;;;443 SDIO->DCTRL = tmpreg;
000022 62cb STR r3,[r1,#0x2c]
;;;444 }
000024 bd30 POP {r4,r5,pc}
;;;445
ENDP
000026 0000 DCW 0x0000
|L13.40|
000028 40018000 DCD 0x40018000
AREA ||i.SDIO_DataStructInit||, CODE, READONLY, ALIGN=1
SDIO_DataStructInit PROC
;;;456 /* SDIO_DataInitStruct members default value */
;;;457 SDIO_DataInitStruct->SDIO_DataTimeOut = 0xFFFFFFFF;
000000 f04ff04f MOV r1,#0xffffffff
;;;458 SDIO_DataInitStruct->SDIO_DataLength = 0x00;
000004 6001 STR r1,[r0,#0]
000006 2100 MOVS r1,#0
;;;459 SDIO_DataInitStruct->SDIO_DataBlockSize = SDIO_DataBlockSize_1b;
000008 6041 STR r1,[r0,#4]
;;;460 SDIO_DataInitStruct->SDIO_TransferDir = SDIO_TransferDir_ToCard;
00000a 6081 STR r1,[r0,#8]
;;;461 SDIO_DataInitStruct->SDIO_TransferMode = SDIO_TransferMode_Block;
00000c 60c1 STR r1,[r0,#0xc]
;;;462 SDIO_DataInitStruct->SDIO_DPSM = SDIO_DPSM_Disable;
00000e 6101 STR r1,[r0,#0x10]
;;;463 }
000010 6141 STR r1,[r0,#0x14]
000012 4770 BX lr
;;;464
ENDP
AREA ||i.SDIO_GetDataCounter||, CODE, READONLY, ALIGN=2
SDIO_GetDataCounter PROC
;;;473 {
;;;474 return SDIO->DCOUNT;
000000 4801 LDR r0,|L15.8|
000002 6b00 LDR r0,[r0,#0x30]
;;;475 }
000004 4770 BX lr
;;;476
ENDP
000006 0000 DCW 0x0000
|L15.8|
000008 40018000 DCD 0x40018000
AREA ||i.SDIO_ReadData||, CODE, READONLY, ALIGN=2
SDIO_ReadData PROC
;;;484 u32 SDIO_ReadData(void)
;;;485 {
000000 4801 LDR r0,|L16.8|
;;;486 return SDIO->FIFO;
000002 6800 LDR r0,[r0,#0]
;;;487 }
000004 4770 BX lr
;;;488
ENDP
000006 0000 DCW 0x0000
|L16.8|
000008 40018080 DCD 0x40018080
AREA ||i.SDIO_WriteData||, CODE, READONLY, ALIGN=2
SDIO_WriteData PROC
;;;496 void SDIO_WriteData(u32 Data)
;;;497 {
000000 4901 LDR r1,|L17.8|
;;;498 SDIO->FIFO = Data;
000002 6008 STR r0,[r1,#0]
;;;499 }
000004 4770 BX lr
;;;500
ENDP
000006 0000 DCW 0x0000
|L17.8|
000008 40018080 DCD 0x40018080
AREA ||i.SDIO_GetFIFOCount||, CODE, READONLY, ALIGN=2
SDIO_GetFIFOCount PROC
;;;510 {
;;;511 return SDIO->FIFOCNT;
000000 4801 LDR r0,|L18.8|
000002 6c80 LDR r0,[r0,#0x48]
;;;512 }
000004 4770 BX lr
;;;513
ENDP
000006 0000 DCW 0x0000
|L18.8|
000008 40018000 DCD 0x40018000
AREA ||i.SDIO_StartSDIOReadWait||, CODE, READONLY, ALIGN=2
SDIO_StartSDIOReadWait PROC
;;;522 void SDIO_StartSDIOReadWait(FunctionalState NewState)
;;;523 {
000000 4901 LDR r1,|L19.8|
;;;524 /* Check the parameters */
;;;525 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;526
;;;527 *(vu32 *) DCTRL_RWSTART_BB = (u32) NewState;
000002 6008 STR r0,[r1,#0]
;;;528 }
000004 4770 BX lr
;;;529
ENDP
000006 0000 DCW 0x0000
|L19.8|
000008 423005a0 DCD 0x423005a0
AREA ||i.SDIO_StopSDIOReadWait||, CODE, READONLY, ALIGN=2
SDIO_StopSDIOReadWait PROC
;;;538 void SDIO_StopSDIOReadWait(FunctionalState NewState)
;;;539 {
000000 4901 LDR r1,|L20.8|
;;;540 /* Check the parameters */
;;;541 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;542
;;;543 *(vu32 *) DCTRL_RWSTOP_BB = (u32) NewState;
000002 6008 STR r0,[r1,#0]
;;;544 }
000004 4770 BX lr
;;;545
ENDP
000006 0000 DCW 0x0000
|L20.8|
000008 423005a4 DCD 0x423005a4
AREA ||i.SDIO_SetSDIOReadWaitMode||, CODE, READONLY, ALIGN=2
SDIO_SetSDIOReadWaitMode PROC
;;;556 void SDIO_SetSDIOReadWaitMode(u32 SDIO_ReadWaitMode)
;;;557 {
000000 4901 LDR r1,|L21.8|
;;;558 /* Check the parameters */
;;;559 assert_param(IS_SDIO_READWAIT_MODE(SDIO_ReadWaitMode));
;;;560
;;;561 *(vu32 *) DCTRL_RWMOD_BB = SDIO_ReadWaitMode;
000002 6008 STR r0,[r1,#0]
;;;562 }
000004 4770 BX lr
;;;563
ENDP
000006 0000 DCW 0x0000
|L21.8|
000008 423005a8 DCD 0x423005a8
AREA ||i.SDIO_SetSDIOOperation||, CODE, READONLY, ALIGN=2
SDIO_SetSDIOOperation PROC
;;;572 void SDIO_SetSDIOOperation(FunctionalState NewState)
;;;573 {
000000 4901 LDR r1,|L22.8|
;;;574 /* Check the parameters */
;;;575 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;576
;;;577 *(vu32 *) DCTRL_SDIOEN_BB = (u32)NewState;
000002 6008 STR r0,[r1,#0]
;;;578 }
000004 4770 BX lr
;;;579
ENDP
000006 0000 DCW 0x0000
|L22.8|
000008 423005ac DCD 0x423005ac
AREA ||i.SDIO_SendSDIOSuspendCmd||, CODE, READONLY, ALIGN=2
SDIO_SendSDIOSuspendCmd PROC
;;;588 void SDIO_SendSDIOSuspendCmd(FunctionalState NewState)
;;;589 {
000000 4901 LDR r1,|L23.8|
;;;590 /* Check the parameters */
;;;591 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;592
;;;593 *(vu32 *) CMD_SDIOSUSPEND_BB = (u32)NewState;
000002 6008 STR r0,[r1,#0]
;;;594 }
000004 4770 BX lr
;;;595
ENDP
000006 0000 DCW 0x0000
|L23.8|
000008 423001ac DCD 0x423001ac
AREA ||i.SDIO_CommandCompletionCmd||, CODE, READONLY, ALIGN=2
SDIO_CommandCompletionCmd PROC
;;;604 void SDIO_CommandCompletionCmd(FunctionalState NewState)
;;;605 {
000000 4901 LDR r1,|L24.8|
;;;606 /* Check the parameters */
;;;607 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;608
;;;609 *(vu32 *) CMD_ENCMDCOMPL_BB = (u32)NewState;
000002 6008 STR r0,[r1,#0]
;;;610 }
000004 4770 BX lr
;;;611
ENDP
000006 0000 DCW 0x0000
|L24.8|
000008 423001b0 DCD 0x423001b0
AREA ||i.SDIO_CEATAITCmd||, CODE, READONLY, ALIGN=2
SDIO_CEATAITCmd PROC
;;;624
;;;625 *(vu32 *) CMD_NIEN_BB = (u32)((~((u32)NewState)) & ((u32)0x1));
000000 2101 MOVS r1,#1
000002 4381 BICS r1,r1,r0
000004 4801 LDR r0,|L25.12|
000006 6001 STR r1,[r0,#0]
;;;626 }
000008 4770 BX lr
;;;627
ENDP
00000a 0000 DCW 0x0000
|L25.12|
00000c 423001b4 DCD 0x423001b4
AREA ||i.SDIO_SendCEATACmd||, CODE, READONLY, ALIGN=2
SDIO_SendCEATACmd PROC
;;;636 void SDIO_SendCEATACmd(FunctionalState NewState)
;;;637 {
000000 4901 LDR r1,|L26.8|
;;;638 /* Check the parameters */
;;;639 assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;640
;;;641 *(vu32 *) CMD_ATACMD_BB = (u32)NewState;
000002 6008 STR r0,[r1,#0]
;;;642 }
000004 4770 BX lr
;;;643
ENDP
000006 0000 DCW 0x0000
|L26.8|
000008 423001b8 DCD 0x423001b8
AREA ||i.SDIO_GetFlagStatus||, CODE, READONLY, ALIGN=2
SDIO_GetFlagStatus PROC
;;;689
;;;690 if ((SDIO->STA & SDIO_FLAG) != (u32)RESET)
000000 4903 LDR r1,|L27.16|
000002 4602 MOV r2,r0
000004 6b49 LDR r1,[r1,#0x34]
000006 2000 MOVS r0,#0
000008 4211 TST r1,r2
00000a d000 BEQ |L27.14|
;;;691 {
;;;692 bitstatus = SET;
00000c 2001 MOVS r0,#1
|L27.14|
;;;693 }
;;;694 else
;;;695 {
;;;696 bitstatus = RESET;
;;;697 }
;;;698 return bitstatus;
;;;699 }
00000e 4770 BX lr
;;;700
ENDP
|L27.16|
000010 40018000 DCD 0x40018000
AREA ||i.SDIO_ClearFlag||, CODE, READONLY, ALIGN=2
SDIO_ClearFlag PROC
;;;734
;;;735 SDIO->ICR = SDIO_FLAG;
000000 4901 LDR r1,|L28.8|
000002 6388 STR r0,[r1,#0x38]
;;;736 }
000004 4770 BX lr
;;;737
ENDP
000006 0000 DCW 0x0000
|L28.8|
000008 40018000 DCD 0x40018000
AREA ||i.SDIO_GetITStatus||, CODE, READONLY, ALIGN=2
SDIO_GetITStatus PROC
;;;784
;;;785 if ((SDIO->STA & SDIO_IT) != (u32)RESET)
000000 4903 LDR r1,|L29.16|
000002 4602 MOV r2,r0
000004 6b49 LDR r1,[r1,#0x34]
000006 2000 MOVS r0,#0
000008 4211 TST r1,r2
00000a d000 BEQ |L29.14|
;;;786 {
;;;787 bitstatus = SET;
00000c 2001 MOVS r0,#1
|L29.14|
;;;788 }
;;;789 else
;;;790 {
;;;791 bitstatus = RESET;
;;;792 }
;;;793 return bitstatus;
;;;794 }
00000e 4770 BX lr
;;;795
ENDP
|L29.16|
000010 40018000 DCD 0x40018000
AREA ||i.SDIO_ClearITPendingBit||, CODE, READONLY, ALIGN=2
SDIO_ClearITPendingBit PROC
;;;828
;;;829 SDIO->ICR = SDIO_IT;
000000 4901 LDR r1,|L30.8|
000002 6388 STR r0,[r1,#0x38]
;;;830 }
000004 4770 BX lr
;;;831
ENDP
000006 0000 DCW 0x0000
|L30.8|
000008 40018000 DCD 0x40018000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -