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

📄 bsp_sdio_sd.txt

📁 stm32-SDIO+FatFS文件系统txt-int-ascii
💻 TXT
📖 第 1 页 / 共 5 页
字号:
; generated by ARM C/C++ Compiler, 4.1 [Build 561]
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\CpuRAM\Obj\bsp_sdio_sd.o --depend=.\CpuRAM\Obj\bsp_sdio_sd.d --cpu=Cortex-M3 --apcs=interwork -O0 --diag_suppress=870 -I..\..\Libraries\CMSIS\CM3\CoreSupport -I..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\User\bsp -I..\..\User\fatfs -I..\..\User -IC:\Keil\ARM\INC -IC:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -DVECT_TAB_SRAM ..\..\User\bsp\bsp_sdio_sd.c]
                          THUMB

                          AREA ||i.CmdError||, CODE, READONLY, ALIGN=1

                  CmdError PROC
;;;2241     */
;;;2242   static SD_Error CmdError(void)
000000  b570              PUSH     {r4-r6,lr}
;;;2243   {
;;;2244     SD_Error errorstatus = SD_OK;
000002  252a              MOVS     r5,#0x2a
;;;2245     uint32_t timeout;
;;;2246   
;;;2247     timeout = SDIO_CMD0TIMEOUT; /*!< 10000 */
000004  f44f3480          MOV      r4,#0x10000
;;;2248   
;;;2249     while ((timeout > 0) && (SDIO_GetFlagStatus(SDIO_FLAG_CMDSENT) == RESET))
000008  e000              B        |L1.12|
                  |L1.10|
;;;2250     {
;;;2251       timeout--;
00000a  1e64              SUBS     r4,r4,#1
                  |L1.12|
00000c  b124              CBZ      r4,|L1.24|
00000e  2080              MOVS     r0,#0x80              ;2249
000010  f7fffffe          BL       SDIO_GetFlagStatus
000014  2800              CMP      r0,#0                 ;2249
000016  d0f8              BEQ      |L1.10|
                  |L1.24|
;;;2252     }
;;;2253   
;;;2254     if (timeout == 0)
000018  b914              CBNZ     r4,|L1.32|
;;;2255     {
;;;2256       errorstatus = SD_CMD_RSP_TIMEOUT;
00001a  2503              MOVS     r5,#3
;;;2257       return(errorstatus);
00001c  4628              MOV      r0,r5
                  |L1.30|
;;;2258     }
;;;2259   
;;;2260     /*!< Clear all the static flags */
;;;2261     SDIO_ClearFlag(SDIO_STATIC_FLAGS);
;;;2262   
;;;2263     return(errorstatus);
;;;2264   }
00001e  bd70              POP      {r4-r6,pc}
                  |L1.32|
000020  f24050ff          MOV      r0,#0x5ff             ;2261
000024  f7fffffe          BL       SDIO_ClearFlag
000028  4628              MOV      r0,r5                 ;2263
00002a  e7f8              B        |L1.30|
;;;2265   
                          ENDP


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

                  CmdResp1Error PROC
;;;2307     */
;;;2308   static SD_Error CmdResp1Error(uint8_t cmd)
000000  e92d41f0          PUSH     {r4-r8,lr}
;;;2309   {
000004  4606              MOV      r6,r0
;;;2310     SD_Error errorstatus = SD_OK;
000006  272a              MOVS     r7,#0x2a
;;;2311     uint32_t status;
;;;2312     uint32_t response_r1;
;;;2313   
;;;2314     status = SDIO->STA;
000008  4847              LDR      r0,|L2.296|
00000a  6b45              LDR      r5,[r0,#0x34]
;;;2315   
;;;2316     while (!(status & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)))
00000c  e001              B        |L2.18|
                  |L2.14|
;;;2317     {
;;;2318       status = SDIO->STA;
00000e  4846              LDR      r0,|L2.296|
000010  6b45              LDR      r5,[r0,#0x34]
                  |L2.18|
000012  f0150f45          TST      r5,#0x45              ;2316
000016  d0fa              BEQ      |L2.14|
;;;2319     }
;;;2320   
;;;2321     if (status & SDIO_FLAG_CTIMEOUT)
000018  f0150f04          TST      r5,#4
00001c  d006              BEQ      |L2.44|
;;;2322     {
;;;2323       errorstatus = SD_CMD_RSP_TIMEOUT;
00001e  2703              MOVS     r7,#3
;;;2324       SDIO_ClearFlag(SDIO_FLAG_CTIMEOUT);
000020  2004              MOVS     r0,#4
000022  f7fffffe          BL       SDIO_ClearFlag
;;;2325       return(errorstatus);
000026  4638              MOV      r0,r7
                  |L2.40|
;;;2326     }
;;;2327     else if (status & SDIO_FLAG_CCRCFAIL)
;;;2328     {
;;;2329       errorstatus = SD_CMD_CRC_FAIL;
;;;2330       SDIO_ClearFlag(SDIO_FLAG_CCRCFAIL);
;;;2331       return(errorstatus);
;;;2332     }
;;;2333   
;;;2334     /*!< Check response received is of desired command */
;;;2335     if (SDIO_GetCommandResponse() != cmd)
;;;2336     {
;;;2337       errorstatus = SD_ILLEGAL_CMD;
;;;2338       return(errorstatus);
;;;2339     }
;;;2340   
;;;2341     /*!< Clear all the static flags */
;;;2342     SDIO_ClearFlag(SDIO_STATIC_FLAGS);
;;;2343   
;;;2344     /*!< We have received response, retrieve it for analysis  */
;;;2345     response_r1 = SDIO_GetResponse(SDIO_RESP1);
;;;2346   
;;;2347     if ((response_r1 & SD_OCR_ERRORBITS) == SD_ALLZERO)
;;;2348     {
;;;2349       return(errorstatus);
;;;2350     }
;;;2351   
;;;2352     if (response_r1 & SD_OCR_ADDR_OUT_OF_RANGE)
;;;2353     {
;;;2354       return(SD_ADDR_OUT_OF_RANGE);
;;;2355     }
;;;2356   
;;;2357     if (response_r1 & SD_OCR_ADDR_MISALIGNED)
;;;2358     {
;;;2359       return(SD_ADDR_MISALIGNED);
;;;2360     }
;;;2361   
;;;2362     if (response_r1 & SD_OCR_BLOCK_LEN_ERR)
;;;2363     {
;;;2364       return(SD_BLOCK_LEN_ERR);
;;;2365     }
;;;2366   
;;;2367     if (response_r1 & SD_OCR_ERASE_SEQ_ERR)
;;;2368     {
;;;2369       return(SD_ERASE_SEQ_ERR);
;;;2370     }
;;;2371   
;;;2372     if (response_r1 & SD_OCR_BAD_ERASE_PARAM)
;;;2373     {
;;;2374       return(SD_BAD_ERASE_PARAM);
;;;2375     }
;;;2376   
;;;2377     if (response_r1 & SD_OCR_WRITE_PROT_VIOLATION)
;;;2378     {
;;;2379       return(SD_WRITE_PROT_VIOLATION);
;;;2380     }
;;;2381   
;;;2382     if (response_r1 & SD_OCR_LOCK_UNLOCK_FAILED)
;;;2383     {
;;;2384       return(SD_LOCK_UNLOCK_FAILED);
;;;2385     }
;;;2386   
;;;2387     if (response_r1 & SD_OCR_COM_CRC_FAILED)
;;;2388     {
;;;2389       return(SD_COM_CRC_FAILED);
;;;2390     }
;;;2391   
;;;2392     if (response_r1 & SD_OCR_ILLEGAL_CMD)
;;;2393     {
;;;2394       return(SD_ILLEGAL_CMD);
;;;2395     }
;;;2396   
;;;2397     if (response_r1 & SD_OCR_CARD_ECC_FAILED)
;;;2398     {
;;;2399       return(SD_CARD_ECC_FAILED);
;;;2400     }
;;;2401   
;;;2402     if (response_r1 & SD_OCR_CC_ERROR)
;;;2403     {
;;;2404       return(SD_CC_ERROR);
;;;2405     }
;;;2406   
;;;2407     if (response_r1 & SD_OCR_GENERAL_UNKNOWN_ERROR)
;;;2408     {
;;;2409       return(SD_GENERAL_UNKNOWN_ERROR);
;;;2410     }
;;;2411   
;;;2412     if (response_r1 & SD_OCR_STREAM_READ_UNDERRUN)
;;;2413     {
;;;2414       return(SD_STREAM_READ_UNDERRUN);
;;;2415     }
;;;2416   
;;;2417     if (response_r1 & SD_OCR_STREAM_WRITE_OVERRUN)
;;;2418     {
;;;2419       return(SD_STREAM_WRITE_OVERRUN);
;;;2420     }
;;;2421   
;;;2422     if (response_r1 & SD_OCR_CID_CSD_OVERWRIETE)
;;;2423     {
;;;2424       return(SD_CID_CSD_OVERWRITE);
;;;2425     }
;;;2426   
;;;2427     if (response_r1 & SD_OCR_WP_ERASE_SKIP)
;;;2428     {
;;;2429       return(SD_WP_ERASE_SKIP);
;;;2430     }
;;;2431   
;;;2432     if (response_r1 & SD_OCR_CARD_ECC_DISABLED)
;;;2433     {
;;;2434       return(SD_CARD_ECC_DISABLED);
;;;2435     }
;;;2436   
;;;2437     if (response_r1 & SD_OCR_ERASE_RESET)
;;;2438     {
;;;2439       return(SD_ERASE_RESET);
;;;2440     }
;;;2441   
;;;2442     if (response_r1 & SD_OCR_AKE_SEQ_ERROR)
;;;2443     {
;;;2444       return(SD_AKE_SEQ_ERROR);
;;;2445     }
;;;2446     return(errorstatus);
;;;2447   }
000028  e8bd81f0          POP      {r4-r8,pc}
                  |L2.44|
00002c  f0150f01          TST      r5,#1                 ;2327
000030  d005              BEQ      |L2.62|
000032  2701              MOVS     r7,#1                 ;2329
000034  2001              MOVS     r0,#1                 ;2330
000036  f7fffffe          BL       SDIO_ClearFlag
00003a  4638              MOV      r0,r7                 ;2331
00003c  e7f4              B        |L2.40|
                  |L2.62|
00003e  f7fffffe          BL       SDIO_GetCommandResponse
000042  42b0              CMP      r0,r6                 ;2335
000044  d002              BEQ      |L2.76|
000046  2710              MOVS     r7,#0x10              ;2337
000048  4638              MOV      r0,r7                 ;2338
00004a  e7ed              B        |L2.40|
                  |L2.76|
00004c  f24050ff          MOV      r0,#0x5ff             ;2342
000050  f7fffffe          BL       SDIO_ClearFlag
000054  2000              MOVS     r0,#0                 ;2345
000056  f7fffffe          BL       SDIO_GetResponse
00005a  4604              MOV      r4,r0                 ;2345
00005c  4833              LDR      r0,|L2.300|
00005e  4204              TST      r4,r0                 ;2347
000060  d101              BNE      |L2.102|
000062  4638              MOV      r0,r7                 ;2349
000064  e7e0              B        |L2.40|
                  |L2.102|
000066  f0144f00          TST      r4,#0x80000000        ;2352
00006a  d001              BEQ      |L2.112|
00006c  201c              MOVS     r0,#0x1c              ;2354
00006e  e7db              B        |L2.40|
                  |L2.112|
000070  f0144f80          TST      r4,#0x40000000        ;2357
000074  d001              BEQ      |L2.122|
000076  2009              MOVS     r0,#9                 ;2359
000078  e7d6              B        |L2.40|
                  |L2.122|
00007a  f0145f00          TST      r4,#0x20000000        ;2362
00007e  d001              BEQ      |L2.132|
000080  200a              MOVS     r0,#0xa               ;2364
000082  e7d1              B        |L2.40|
                  |L2.132|
000084  f0145f80          TST      r4,#0x10000000        ;2367
000088  d001              BEQ      |L2.142|
00008a  200b              MOVS     r0,#0xb               ;2369
00008c  e7cc              B        |L2.40|
                  |L2.142|
00008e  f0146f00          TST      r4,#0x8000000         ;2372
000092  d001              BEQ      |L2.152|
000094  200c              MOVS     r0,#0xc               ;2374
000096  e7c7              B        |L2.40|
                  |L2.152|
000098  f0146f80          TST      r4,#0x4000000         ;2377
00009c  d001              BEQ      |L2.162|
00009e  200d              MOVS     r0,#0xd               ;2379
0000a0  e7c2              B        |L2.40|
                  |L2.162|
0000a2  f0147f80          TST      r4,#0x1000000         ;2382
0000a6  d001              BEQ      |L2.172|
0000a8  200e              MOVS     r0,#0xe               ;2384
0000aa  e7bd              B        |L2.40|
                  |L2.172|
0000ac  f4140f00          TST      r4,#0x800000          ;2387
0000b0  d001              BEQ      |L2.182|
0000b2  200f              MOVS     r0,#0xf               ;2389
0000b4  e7b8              B        |L2.40|
                  |L2.182|
0000b6  f4140f80          TST      r4,#0x400000          ;2392
0000ba  d001              BEQ      |L2.192|
0000bc  2010              MOVS     r0,#0x10              ;2394
0000be  e7b3              B        |L2.40|
                  |L2.192|
0000c0  f4141f00          TST      r4,#0x200000          ;2397
0000c4  d001              BEQ      |L2.202|
0000c6  2011              MOVS     r0,#0x11              ;2399
0000c8  e7ae              B        |L2.40|
                  |L2.202|
0000ca  f4141f80          TST      r4,#0x100000          ;2402
0000ce  d001              BEQ      |L2.212|
0000d0  2012              MOVS     r0,#0x12              ;2404
0000d2  e7a9              B        |L2.40|
                  |L2.212|
0000d4  f4142f00          TST      r4,#0x80000           ;2407

⌨️ 快捷键说明

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