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

📄 sdcard.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:
;;;2538     }
;;;2539     else if (status & SDIO_FLAG_CCRCFAIL)
00003a  07c0              LSLS     r0,r0,#31
00003c  d005              BEQ      |L7.74|
;;;2540     {
;;;2541       errorstatus = SD_CMD_CRC_FAIL;
00003e  2401              MOVS     r4,#1
;;;2542       SDIO_ClearFlag(SDIO_FLAG_CCRCFAIL);
000040  4620              MOV      r0,r4
                  |L7.66|
000042  f7fffffe          BL       SDIO_ClearFlag
;;;2543       return(errorstatus);
000046  4620              MOV      r0,r4
;;;2544     }
;;;2545   
;;;2546     status = (u32)SDIO_GetCommandResponse();
;;;2547   
;;;2548     /* Check response received is of desired command */
;;;2549     if (status != SDIO_SEND_STATUS)
;;;2550     {
;;;2551       errorstatus = SD_ILLEGAL_CMD;
;;;2552       return(errorstatus);
;;;2553     }
;;;2554   
;;;2555     /* Clear all the static flags */
;;;2556     SDIO_ClearFlag(SDIO_STATIC_FLAGS);
;;;2557   
;;;2558   
;;;2559     /* We have received response, retrieve it for analysis  */
;;;2560     respR1 = SDIO_GetResponse(SDIO_RESP1);
;;;2561   
;;;2562     /* Find out card status */
;;;2563     *pstatus = (u8) ((respR1 >> 9) & 0x0000000F);
;;;2564   
;;;2565     if ((respR1 & SD_OCR_ERRORBITS) == SD_ALLZERO)
;;;2566     {
;;;2567       return(errorstatus);
;;;2568     }
;;;2569   
;;;2570     if (respR1 & SD_OCR_ADDR_OUT_OF_RANGE)
;;;2571     {
;;;2572       return(SD_ADDR_OUT_OF_RANGE);
;;;2573     }
;;;2574   
;;;2575     if (respR1 & SD_OCR_ADDR_MISALIGNED)
;;;2576     {
;;;2577       return(SD_ADDR_MISALIGNED);
;;;2578     }
;;;2579   
;;;2580     if (respR1 & SD_OCR_BLOCK_LEN_ERR)
;;;2581     {
;;;2582       return(SD_BLOCK_LEN_ERR);
;;;2583     }
;;;2584   
;;;2585     if (respR1 & SD_OCR_ERASE_SEQ_ERR)
;;;2586     {
;;;2587       return(SD_ERASE_SEQ_ERR);
;;;2588     }
;;;2589   
;;;2590     if (respR1 & SD_OCR_BAD_ERASE_PARAM)
;;;2591     {
;;;2592       return(SD_BAD_ERASE_PARAM);
;;;2593     }
;;;2594   
;;;2595     if (respR1 & SD_OCR_WRITE_PROT_VIOLATION)
;;;2596     {
;;;2597       return(SD_WRITE_PROT_VIOLATION);
;;;2598     }
;;;2599   
;;;2600     if (respR1 & SD_OCR_LOCK_UNLOCK_FAILED)
;;;2601     {
;;;2602       return(SD_LOCK_UNLOCK_FAILED);
;;;2603     }
;;;2604   
;;;2605     if (respR1 & SD_OCR_COM_CRC_FAILED)
;;;2606     {
;;;2607       return(SD_COM_CRC_FAILED);
;;;2608     }
;;;2609   
;;;2610     if (respR1 & SD_OCR_ILLEGAL_CMD)
;;;2611     {
;;;2612       return(SD_ILLEGAL_CMD);
;;;2613     }
;;;2614   
;;;2615     if (respR1 & SD_OCR_CARD_ECC_FAILED)
;;;2616     {
;;;2617       return(SD_CARD_ECC_FAILED);
;;;2618     }
;;;2619   
;;;2620     if (respR1 & SD_OCR_CC_ERROR)
;;;2621     {
;;;2622       return(SD_CC_ERROR);
;;;2623     }
;;;2624   
;;;2625     if (respR1 & SD_OCR_GENERAL_UNKNOWN_ERROR)
;;;2626     {
;;;2627       return(SD_GENERAL_UNKNOWN_ERROR);
;;;2628     }
;;;2629   
;;;2630     if (respR1 & SD_OCR_STREAM_READ_UNDERRUN)
;;;2631     {
;;;2632       return(SD_STREAM_READ_UNDERRUN);
;;;2633     }
;;;2634   
;;;2635     if (respR1 & SD_OCR_STREAM_WRITE_OVERRUN)
;;;2636     {
;;;2637       return(SD_STREAM_WRITE_OVERRUN);
;;;2638     }
;;;2639   
;;;2640     if (respR1 & SD_OCR_CID_CSD_OVERWRIETE)
;;;2641     {
;;;2642       return(SD_CID_CSD_OVERWRITE);
;;;2643     }
;;;2644   
;;;2645     if (respR1 & SD_OCR_WP_ERASE_SKIP)
;;;2646     {
;;;2647       return(SD_WP_ERASE_SKIP);
;;;2648     }
;;;2649   
;;;2650     if (respR1 & SD_OCR_CARD_ECC_DISABLED)
;;;2651     {
;;;2652       return(SD_CARD_ECC_DISABLED);
;;;2653     }
;;;2654   
;;;2655     if (respR1 & SD_OCR_ERASE_RESET)
;;;2656     {
;;;2657       return(SD_ERASE_RESET);
;;;2658     }
;;;2659   
;;;2660     if (respR1 & SD_OCR_AKE_SEQ_ERROR)
;;;2661     {
;;;2662       return(SD_AKE_SEQ_ERROR);
;;;2663     }
;;;2664   
;;;2665     return(errorstatus);
;;;2666   }
000048  bd70              POP      {r4-r6,pc}
                  |L7.74|
00004a  f7fffffe          BL       SDIO_GetCommandResponse
00004e  280d              CMP      r0,#0xd               ;2549
000050  d12e              BNE      |L7.176|
000052  f24050ff          MOV      r0,#0x5ff             ;2556
000056  f7fffffe          BL       SDIO_ClearFlag
00005a  2000              MOVS     r0,#0                 ;2560
00005c  f7fffffe          BL       SDIO_GetResponse
000060  f3c02143          UBFX     r1,r0,#9,#4           ;2563
000064  7021              STRB     r1,[r4,#0]            ;2563
000066  492b              LDR      r1,|L7.276|
000068  4208              TST      r0,r1                 ;2565
00006a  d04b              BEQ      |L7.260|
00006c  2800              CMP      r0,#0                 ;2570
00006e  da01              BGE      |L7.116|
000070  201c              MOVS     r0,#0x1c              ;2572
000072  bd70              POP      {r4-r6,pc}
                  |L7.116|
000074  0041              LSLS     r1,r0,#1              ;2575
000076  d501              BPL      |L7.124|
000078  2009              MOVS     r0,#9                 ;2577
00007a  bd70              POP      {r4-r6,pc}
                  |L7.124|
00007c  0081              LSLS     r1,r0,#2
00007e  d501              BPL      |L7.132|
000080  200a              MOVS     r0,#0xa               ;2582
000082  bd70              POP      {r4-r6,pc}
                  |L7.132|
000084  00c1              LSLS     r1,r0,#3
000086  d501              BPL      |L7.140|
000088  200b              MOVS     r0,#0xb               ;2587
00008a  bd70              POP      {r4-r6,pc}
                  |L7.140|
00008c  0101              LSLS     r1,r0,#4
00008e  d501              BPL      |L7.148|
000090  200c              MOVS     r0,#0xc               ;2592
000092  bd70              POP      {r4-r6,pc}
                  |L7.148|
000094  0141              LSLS     r1,r0,#5              ;2595
000096  d501              BPL      |L7.156|
000098  200d              MOVS     r0,#0xd               ;2597
00009a  bd70              POP      {r4-r6,pc}
                  |L7.156|
00009c  01c1              LSLS     r1,r0,#7              ;2600
00009e  d501              BPL      |L7.164|
0000a0  200e              MOVS     r0,#0xe               ;2602
0000a2  bd70              POP      {r4-r6,pc}
                  |L7.164|
0000a4  0201              LSLS     r1,r0,#8              ;2605
0000a6  d501              BPL      |L7.172|
0000a8  200f              MOVS     r0,#0xf               ;2607
0000aa  bd70              POP      {r4-r6,pc}
                  |L7.172|
0000ac  0241              LSLS     r1,r0,#9              ;2610
0000ae  d501              BPL      |L7.180|
                  |L7.176|
0000b0  2010              MOVS     r0,#0x10              ;2612
0000b2  bd70              POP      {r4-r6,pc}
                  |L7.180|
0000b4  0281              LSLS     r1,r0,#10             ;2615
0000b6  d501              BPL      |L7.188|
0000b8  2011              MOVS     r0,#0x11              ;2617
0000ba  bd70              POP      {r4-r6,pc}
                  |L7.188|
0000bc  02c1              LSLS     r1,r0,#11             ;2620
0000be  d501              BPL      |L7.196|
0000c0  2012              MOVS     r0,#0x12              ;2622
0000c2  bd70              POP      {r4-r6,pc}
                  |L7.196|
0000c4  0301              LSLS     r1,r0,#12             ;2625
0000c6  d501              BPL      |L7.204|
0000c8  2013              MOVS     r0,#0x13              ;2627
0000ca  bd70              POP      {r4-r6,pc}
                  |L7.204|
0000cc  0341              LSLS     r1,r0,#13             ;2630
0000ce  d501              BPL      |L7.212|
0000d0  2014              MOVS     r0,#0x14              ;2632
0000d2  bd70              POP      {r4-r6,pc}
                  |L7.212|
0000d4  0381              LSLS     r1,r0,#14             ;2635
0000d6  d501              BPL      |L7.220|
0000d8  2015              MOVS     r0,#0x15              ;2637
0000da  bd70              POP      {r4-r6,pc}
                  |L7.220|
0000dc  03c1              LSLS     r1,r0,#15             ;2640
0000de  d501              BPL      |L7.228|
0000e0  2016              MOVS     r0,#0x16              ;2642
0000e2  bd70              POP      {r4-r6,pc}
                  |L7.228|
0000e4  0401              LSLS     r1,r0,#16             ;2645
0000e6  d501              BPL      |L7.236|
0000e8  2017              MOVS     r0,#0x17              ;2647
0000ea  bd70              POP      {r4-r6,pc}
                  |L7.236|
0000ec  0441              LSLS     r1,r0,#17             ;2650
0000ee  d501              BPL      |L7.244|
0000f0  2018              MOVS     r0,#0x18              ;2652
0000f2  bd70              POP      {r4-r6,pc}
                  |L7.244|
0000f4  0481              LSLS     r1,r0,#18             ;2655
0000f6  d501              BPL      |L7.252|
0000f8  2019              MOVS     r0,#0x19              ;2657
0000fa  bd70              POP      {r4-r6,pc}
                  |L7.252|
0000fc  0700              LSLS     r0,r0,#28             ;2660
0000fe  d501              BPL      |L7.260|
000100  201a              MOVS     r0,#0x1a              ;2662
000102  bd70              POP      {r4-r6,pc}
                  |L7.260|
000104  4628              MOV      r0,r5                 ;2665
000106  bd70              POP      {r4-r6,pc}
;;;2667   
                          ENDP

                  |L7.264|
                          DCD      ||.data||
                  |L7.268|
                          DCD      ||.bss||+0x38
                  |L7.272|
                          DCD      0x40018000
                  |L7.276|
                          DCD      0xfdffe008

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

                  SDEnWideBus PROC
;;;2397   *******************************************************************************/
;;;2398   static SD_Error SDEnWideBus(FunctionalState NewState)
000000  e92d47fc          PUSH     {r2-r10,lr}
;;;2399   {
000004  4681              MOV      r9,r0
;;;2400     SD_Error errorstatus = SD_OK;
;;;2401   
;;;2402     u32 scr[2] = {0, 0};
000006  2100              MOVS     r1,#0
000008  4668              MOV      r0,sp
00000a  460a              MOV      r2,r1
00000c  c006              STM      r0!,{r1,r2}
;;;2403   
;;;2404     if (SDIO_GetResponse(SDIO_RESP1) & SD_CARD_LOCKED)
00000e  4608              MOV      r0,r1
000010  f7fffffe          BL       SDIO_GetResponse
000014  0180              LSLS     r0,r0,#6
000016  d502              BPL      |L8.30|
;;;2405     {
;;;2406       errorstatus = SD_LOCK_UNLOCK_FAILED;
000018  200e              MOVS     r0,#0xe
                  |L8.26|
;;;2407       return(errorstatus);
;;;2408     }
;;;2409   
;;;2410     /* Get SCR Register */
;;;2411     errorstatus = FindSCR(RCA, scr);
;;;2412   
;;;2413     if (errorstatus != SD_OK)
;;;2414     {
;;;2415       return(errorstatus);
;;;2416     }
;;;2417   
;;;2418     /* If wide bus operation to be enabled */
;;;2419     if (NewState == ENABLE)
;;;2420     {
;;;2421       /* If requested card supports wide bus operation */
;;;2422       if ((scr[1] & SD_WIDE_BUS_SUPPORT) != SD_ALLZERO)
;;;2423       {
;;;2424         /* Send CMD55 APP_CMD with argument as card's RCA.*/
;;;2425         SDIO_CmdInitStructure.SDIO_Argument = (u32) RCA << 16;
;;;2426         SDIO_CmdInitStructure.SDIO_CmdIndex = SDIO_APP_CMD;
;;;2427         SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
;;;2428         SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;

⌨️ 快捷键说明

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