⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bsp_sdio_sd.txt

📁 stm32-SDIO+FatFS文件系统txt-int-ascii
💻 TXT
📖 第 1 页 / 共 5 页
字号:
0000d8  d001              BEQ      |L2.222|
0000da  2013              MOVS     r0,#0x13              ;2409
0000dc  e7a4              B        |L2.40|
                  |L2.222|
0000de  f4142f80          TST      r4,#0x40000           ;2412
0000e2  d001              BEQ      |L2.232|
0000e4  2014              MOVS     r0,#0x14              ;2414
0000e6  e79f              B        |L2.40|
                  |L2.232|
0000e8  f4143f00          TST      r4,#0x20000           ;2417
0000ec  d001              BEQ      |L2.242|
0000ee  2015              MOVS     r0,#0x15              ;2419
0000f0  e79a              B        |L2.40|
                  |L2.242|
0000f2  f4143f80          TST      r4,#0x10000           ;2422
0000f6  d001              BEQ      |L2.252|
0000f8  2016              MOVS     r0,#0x16              ;2424
0000fa  e795              B        |L2.40|
                  |L2.252|
0000fc  f4144f00          TST      r4,#0x8000            ;2427
000100  d001              BEQ      |L2.262|
000102  2017              MOVS     r0,#0x17              ;2429
000104  e790              B        |L2.40|
                  |L2.262|
000106  f4144f80          TST      r4,#0x4000            ;2432
00010a  d001              BEQ      |L2.272|
00010c  2018              MOVS     r0,#0x18              ;2434
00010e  e78b              B        |L2.40|
                  |L2.272|
000110  f4145f00          TST      r4,#0x2000            ;2437
000114  d001              BEQ      |L2.282|
000116  2019              MOVS     r0,#0x19              ;2439
000118  e786              B        |L2.40|
                  |L2.282|
00011a  f0140f08          TST      r4,#8                 ;2442
00011e  d001              BEQ      |L2.292|
000120  201a              MOVS     r0,#0x1a              ;2444
000122  e781              B        |L2.40|
                  |L2.292|
000124  4638              MOV      r0,r7                 ;2446
000126  e77f              B        |L2.40|
;;;2448   
                          ENDP

                  |L2.296|
                          DCD      0x40018000
                  |L2.300|
                          DCD      0xfdffe008

                          AREA ||i.CmdResp2Error||, CODE, READONLY, ALIGN=2

                  CmdResp2Error PROC
;;;2481     */
;;;2482   static SD_Error CmdResp2Error(void)
000000  b570              PUSH     {r4-r6,lr}
;;;2483   {
;;;2484     SD_Error errorstatus = SD_OK;
000002  252a              MOVS     r5,#0x2a
;;;2485     uint32_t status;
;;;2486   
;;;2487     status = SDIO->STA;
000004  480f              LDR      r0,|L3.68|
000006  6b44              LDR      r4,[r0,#0x34]
;;;2488   
;;;2489     while (!(status & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CTIMEOUT | SDIO_FLAG_CMDREND)))
000008  e001              B        |L3.14|
                  |L3.10|
;;;2490     {
;;;2491       status = SDIO->STA;
00000a  480e              LDR      r0,|L3.68|
00000c  6b44              LDR      r4,[r0,#0x34]
                  |L3.14|
00000e  f0140f45          TST      r4,#0x45              ;2489
000012  d0fa              BEQ      |L3.10|
;;;2492     }
;;;2493   
;;;2494     if (status & SDIO_FLAG_CTIMEOUT)
000014  f0140f04          TST      r4,#4
000018  d005              BEQ      |L3.38|
;;;2495     {
;;;2496       errorstatus = SD_CMD_RSP_TIMEOUT;
00001a  2503              MOVS     r5,#3
;;;2497       SDIO_ClearFlag(SDIO_FLAG_CTIMEOUT);
00001c  2004              MOVS     r0,#4
00001e  f7fffffe          BL       SDIO_ClearFlag
;;;2498       return(errorstatus);
000022  4628              MOV      r0,r5
                  |L3.36|
;;;2499     }
;;;2500     else if (status & SDIO_FLAG_CCRCFAIL)
;;;2501     {
;;;2502       errorstatus = SD_CMD_CRC_FAIL;
;;;2503       SDIO_ClearFlag(SDIO_FLAG_CCRCFAIL);
;;;2504       return(errorstatus);
;;;2505     }
;;;2506   
;;;2507     /*!< Clear all the static flags */
;;;2508     SDIO_ClearFlag(SDIO_STATIC_FLAGS);
;;;2509   
;;;2510     return(errorstatus);
;;;2511   }
000024  bd70              POP      {r4-r6,pc}
                  |L3.38|
000026  f0140f01          TST      r4,#1                 ;2500
00002a  d005              BEQ      |L3.56|
00002c  2501              MOVS     r5,#1                 ;2502
00002e  2001              MOVS     r0,#1                 ;2503
000030  f7fffffe          BL       SDIO_ClearFlag
000034  4628              MOV      r0,r5                 ;2504
000036  e7f5              B        |L3.36|
                  |L3.56|
000038  f24050ff          MOV      r0,#0x5ff             ;2508
00003c  f7fffffe          BL       SDIO_ClearFlag
000040  4628              MOV      r0,r5                 ;2510
000042  e7ef              B        |L3.36|
;;;2512   
                          ENDP

                  |L3.68|
                          DCD      0x40018000

                          AREA ||i.CmdResp3Error||, CODE, READONLY, ALIGN=2

                  CmdResp3Error PROC
;;;2453     */
;;;2454   static SD_Error CmdResp3Error(void)
000000  b570              PUSH     {r4-r6,lr}
;;;2455   {
;;;2456     SD_Error errorstatus = SD_OK;
000002  252a              MOVS     r5,#0x2a
;;;2457     uint32_t status;
;;;2458   
;;;2459     status = SDIO->STA;
000004  480b              LDR      r0,|L4.52|
000006  6b44              LDR      r4,[r0,#0x34]
;;;2460   
;;;2461     while (!(status & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)))
000008  e001              B        |L4.14|
                  |L4.10|
;;;2462     {
;;;2463       status = SDIO->STA;
00000a  480a              LDR      r0,|L4.52|
00000c  6b44              LDR      r4,[r0,#0x34]
                  |L4.14|
00000e  f0140f45          TST      r4,#0x45              ;2461
000012  d0fa              BEQ      |L4.10|
;;;2464     }
;;;2465   
;;;2466     if (status & SDIO_FLAG_CTIMEOUT)
000014  f0140f04          TST      r4,#4
000018  d005              BEQ      |L4.38|
;;;2467     {
;;;2468       errorstatus = SD_CMD_RSP_TIMEOUT;
00001a  2503              MOVS     r5,#3
;;;2469       SDIO_ClearFlag(SDIO_FLAG_CTIMEOUT);
00001c  2004              MOVS     r0,#4
00001e  f7fffffe          BL       SDIO_ClearFlag
;;;2470       return(errorstatus);
000022  4628              MOV      r0,r5
                  |L4.36|
;;;2471     }
;;;2472     /*!< Clear all the static flags */
;;;2473     SDIO_ClearFlag(SDIO_STATIC_FLAGS);
;;;2474     return(errorstatus);
;;;2475   }
000024  bd70              POP      {r4-r6,pc}
                  |L4.38|
000026  f24050ff          MOV      r0,#0x5ff             ;2473
00002a  f7fffffe          BL       SDIO_ClearFlag
00002e  4628              MOV      r0,r5                 ;2474
000030  e7f8              B        |L4.36|
;;;2476   
                          ENDP

000032  0000              DCW      0x0000
                  |L4.52|
                          DCD      0x40018000

                          AREA ||i.CmdResp6Error||, CODE, READONLY, ALIGN=2

                  CmdResp6Error PROC
;;;2519     */
;;;2520   static SD_Error CmdResp6Error(uint8_t cmd, uint16_t *prca)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;2521   {
000004  4606              MOV      r6,r0
000006  460f              MOV      r7,r1
;;;2522     SD_Error errorstatus = SD_OK;
000008  f04f082a          MOV      r8,#0x2a
;;;2523     uint32_t status;
;;;2524     uint32_t response_r1;
;;;2525   
;;;2526     status = SDIO->STA;
00000c  4822              LDR      r0,|L5.152|
00000e  6b45              LDR      r5,[r0,#0x34]
;;;2527   
;;;2528     while (!(status & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CTIMEOUT | SDIO_FLAG_CMDREND)))
000010  e001              B        |L5.22|
                  |L5.18|
;;;2529     {
;;;2530       status = SDIO->STA;
000012  4821              LDR      r0,|L5.152|
000014  6b45              LDR      r5,[r0,#0x34]
                  |L5.22|
000016  f0150f45          TST      r5,#0x45              ;2528
00001a  d0fa              BEQ      |L5.18|
;;;2531     }
;;;2532   
;;;2533     if (status & SDIO_FLAG_CTIMEOUT)
00001c  f0150f04          TST      r5,#4
000020  d007              BEQ      |L5.50|
;;;2534     {
;;;2535       errorstatus = SD_CMD_RSP_TIMEOUT;
000022  f04f0803          MOV      r8,#3
;;;2536       SDIO_ClearFlag(SDIO_FLAG_CTIMEOUT);
000026  2004              MOVS     r0,#4
000028  f7fffffe          BL       SDIO_ClearFlag
;;;2537       return(errorstatus);
00002c  4640              MOV      r0,r8
                  |L5.46|
;;;2538     }
;;;2539     else if (status & SDIO_FLAG_CCRCFAIL)
;;;2540     {
;;;2541       errorstatus = SD_CMD_CRC_FAIL;
;;;2542       SDIO_ClearFlag(SDIO_FLAG_CCRCFAIL);
;;;2543       return(errorstatus);
;;;2544     }
;;;2545   
;;;2546     /*!< Check response received is of desired command */
;;;2547     if (SDIO_GetCommandResponse() != cmd)
;;;2548     {
;;;2549       errorstatus = SD_ILLEGAL_CMD;
;;;2550       return(errorstatus);
;;;2551     }
;;;2552   
;;;2553     /*!< Clear all the static flags */
;;;2554     SDIO_ClearFlag(SDIO_STATIC_FLAGS);
;;;2555   
;;;2556     /*!< We have received response, retrieve it.  */
;;;2557     response_r1 = SDIO_GetResponse(SDIO_RESP1);
;;;2558   
;;;2559     if (SD_ALLZERO == (response_r1 & (SD_R6_GENERAL_UNKNOWN_ERROR | SD_R6_ILLEGAL_CMD | SD_R6_COM_CRC_FAILED)))
;;;2560     {
;;;2561       *prca = (uint16_t) (response_r1 >> 16);
;;;2562       return(errorstatus);
;;;2563     }
;;;2564   
;;;2565     if (response_r1 & SD_R6_GENERAL_UNKNOWN_ERROR)
;;;2566     {
;;;2567       return(SD_GENERAL_UNKNOWN_ERROR);
;;;2568     }
;;;2569   
;;;2570     if (response_r1 & SD_R6_ILLEGAL_CMD)
;;;2571     {
;;;2572       return(SD_ILLEGAL_CMD);
;;;2573     }
;;;2574   
;;;2575     if (response_r1 & SD_R6_COM_CRC_FAILED)
;;;2576     {
;;;2577       return(SD_COM_CRC_FAILED);
;;;2578     }
;;;2579   
;;;2580     return(errorstatus);
;;;2581   }
00002e  e8bd81f0          POP      {r4-r8,pc}
                  |L5.50|
000032  f0150f01          TST      r5,#1                 ;2539
000036  d006              BEQ      |L5.70|
000038  f04f0801          MOV      r8,#1                 ;2541
00003c  2001              MOVS     r0,#1                 ;2542
00003e  f7fffffe          BL       SDIO_ClearFlag
000042  4640              MOV      r0,r8                 ;2543
000044  e7f3              B        |L5.46|
                  |L5.70|
000046  f7fffffe          BL       SDIO_GetCommandResponse
00004a  42b0              CMP      r0,r6                 ;2547
00004c  d003              BEQ      |L5.86|
00004e  f04f0810          MOV      r8,#0x10              ;2549
000052  4640              MOV      r0,r8                 ;2550
000054  e7eb              B        |L5.46|
                  |L5.86|
000056  f24050ff          MOV      r0,#0x5ff             ;2554
00005a  f7fffffe          BL       SDIO_ClearFlag
00005e  2000              MOVS     r0,#0                 ;2557
000060  f7fffffe          BL       SDIO_GetResponse
000064  4604              MOV      r4,r0                 ;2557
000066  f4144f60          TST      r4,#0xe000            ;2559
00006a  d103              BNE      |L5.116|
00006c  0c20              LSRS     r0,r4,#16             ;2561
00006e  8038              STRH     r0,[r7,#0]            ;2561
000070  4640              MOV      r0,r8                 ;2562
000072  e7dc              B        |L5.46|
                  |L5.116|
000074  f4145f00          TST      r4,#0x2000            ;2565
000078  d001              BEQ      |L5.126|
00007a  2013              MOVS     r0,#0x13              ;2567
00007c  e7d7              B        |L5.46|
                  |L5.126|
00007e  f4144f80          TST      r4,#0x4000            ;2570
000082  d001              BEQ      |L5.136|
000084  2010              MOVS     r0,#0x10              ;2572
000086  e7d2              B        |L5.46|
                  |L5.136|
000088  f4144f00          TST      r4,#0x8000            ;2575
00008c  d001              BEQ      |L5.146|

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -