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

📄 mass_storage.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\mass_storage.o --depend=.\Obj\mass_storage.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\SRAM -I"D:\Program Files\MDK KEIL\ARM\INC\ST\STM32F10x" -D__MICROLIB --omf_browse=.\Obj\mass_storage.crf ..\..\source\mass_storage.c]
                          THUMB

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

                  Mass_Storage_Init PROC
;;;44       /* Disable the Pull-Up*/
;;;45       USB_Cable_Config(DISABLE);
000000  2000              MOVS     r0,#0
000002  f7fff7ff          B.W      USB_Cable_Config
;;;46     
;;;47     }
;;;48     
                          ENDP


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

                  Mass_Storage_Start PROC
;;;56     void Mass_Storage_Start (void)
;;;57     {
000000  b5f8              PUSH     {r3-r7,lr}
;;;58       NVIC_InitTypeDef NVIC_InitStructure;
;;;59     
;;;60       /* Disble the JoyStick interrupts */
;;;61       IntExtOnOffConfig(DISABLE);
000002  2000              MOVS     r0,#0
000004  f7fff7ff          BL       IntExtOnOffConfig
                  |L2.8|
;;;62     
;;;63     
;;;64       while(ReadKey() != NOKEY)
000008  f7fff7ff          BL       ReadKey
00000c  2800              CMP      r0,#0
00000e  d1fb              BNE      |L2.8|
;;;65       {
;;;66       }
;;;67     
;;;68       RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000010  2101              MOVS     r1,#1
000012  020c              LSLS     r4,r1,#8
000014  4620              MOV      r0,r4
000016  f7fff7ff          BL       RCC_AHBPeriphClockCmd
;;;69       /* Clear the LCD screen */
;;;70       LCD_Clear(White);
00001a  f64ff64f          MOV      r6,#0xffff
00001e  4630              MOV      r0,r6
000020  f7fff7ff          BL       LCD_Clear
;;;71     
;;;72       LCD_SetDisplayWindow(160, 223, 128, 128);
000024  2380              MOVS     r3,#0x80
000026  461a              MOV      r2,r3
000028  21df              MOVS     r1,#0xdf
00002a  20a0              MOVS     r0,#0xa0
00002c  f7fff7ff          BL       LCD_SetDisplayWindow
;;;73      
;;;74       LCD_NORDisplay(USB_ICON);
000030  482c              LDR      r0,|L2.228|
000032  f7fff7ff          BL       LCD_NORDisplay
;;;75       RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
000036  2101              MOVS     r1,#1
000038  4620              MOV      r0,r4
00003a  f7fff7ff          BL       RCC_AHBPeriphClockCmd
;;;76       /* Disable LCD Window mode */
;;;77       LCD_WindowModeDisable();
00003e  f7fff7ff          BL       LCD_WindowModeDisable
;;;78       
;;;79       /* Set the Back Color */
;;;80       LCD_SetBackColor(Blue);
000042  201f              MOVS     r0,#0x1f
000044  f7fff7ff          BL       LCD_SetBackColor
;;;81       /* Set the Text Color */
;;;82       LCD_SetTextColor(White); 
000048  4630              MOV      r0,r6
00004a  f7fff7ff          BL       LCD_SetTextColor
;;;83     
;;;84       
;;;85       /* Display the "  Plug the USB   " message */
;;;86       LCD_DisplayStringLine(Line8, " Plug the USB Cable ");
00004e  a126              ADR      r1,|L2.232|
000050  20c0              MOVS     r0,#0xc0
000052  f7fff7ff          BL       LCD_DisplayStringLine
;;;87       LCD_DisplayStringLine(Line9, "Exit:  Push JoyStick");
000056  a12a              ADR      r1,|L2.256|
000058  20d8              MOVS     r0,#0xd8
00005a  f7fff7ff          BL       LCD_DisplayStringLine
;;;88         
;;;89       /* Enable and GPIOD clock */
;;;90       USB_Disconnect_Config();
00005e  f7fff7ff          BL       USB_Disconnect_Config
;;;91       
;;;92       /* MAL configuration */
;;;93       MAL_Config();
000062  f7fff7ff          BL       MAL_Config
;;;94     
;;;95       Set_USBClock();
000066  f7fff7ff          BL       Set_USBClock
;;;96     
;;;97       NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN_RX0_IRQChannel;
00006a  2014              MOVS     r0,#0x14
00006c  f88df88d          STRB     r0,[sp,#0]
;;;98       NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
000070  2500              MOVS     r5,#0
000072  f88df88d          STRB     r5,[sp,#1]
;;;99       NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
000076  2401              MOVS     r4,#1
000078  f88df88d          STRB     r4,[sp,#2]
;;;100      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
00007c  f88df88d          STRB     r4,[sp,#3]
;;;101      NVIC_Init(&NVIC_InitStructure);
000080  4668              MOV      r0,sp
000082  f7fff7ff          BL       NVIC_Init
;;;102      
;;;103      NVIC_InitStructure.NVIC_IRQChannel = USB_HP_CAN_TX_IRQChannel;
000086  2013              MOVS     r0,#0x13
000088  f88df88d          STRB     r0,[sp,#0]
;;;104      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
00008c  f88df88d          STRB     r5,[sp,#1]
;;;105      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
000090  f88df88d          STRB     r5,[sp,#2]
;;;106      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
000094  f88df88d          STRB     r4,[sp,#3]
;;;107      NVIC_Init(&NVIC_InitStructure);
000098  4668              MOV      r0,sp
00009a  f7fff7ff          BL       NVIC_Init
;;;108    
;;;109      USB_Init();
00009e  f7fff7ff          BL       USB_Init
0000a2  4c1d              LDR      r4,|L2.280|
0000a4  e003              B        |L2.174|
;;;110    
;;;111      while (bDeviceState != CONFIGURED)
;;;112      {
;;;113        if(ReadKey() != NOKEY)
0000a6  bf00              NOP      
                  |L2.168|
0000a8  f7fff7ff          BL       ReadKey
0000ac  b970              CBNZ     r0,|L2.204|
                  |L2.174|
0000ae  6820              LDR      r0,[r4,#0]            ;111  ; bDeviceState
0000b0  2805              CMP      r0,#5                 ;111
0000b2  d1f9              BNE      |L2.168|
;;;114        {
;;;115          PowerOff();
;;;116          LCD_Clear(White);
;;;117          DisplayMenu();
;;;118          IntExtOnOffConfig(ENABLE);
;;;119          return;
;;;120        }
;;;121      }
;;;122    
;;;123      LCD_ClearLine(Line9);
0000b4  20d8              MOVS     r0,#0xd8
0000b6  f7fff7ff          BL       LCD_ClearLine
;;;124      /* Display the "To stop Press SEL" message */
;;;125      LCD_DisplayStringLine(Line8, "  To stop Press SEL ");
0000ba  a118              ADR      r1,|L2.284|
0000bc  20c0              MOVS     r0,#0xc0
0000be  f7fff7ff          BL       LCD_DisplayStringLine
;;;126    
;;;127      /* Loop until SEL key pressed */
;;;128      while(ReadKey() != SEL)
0000c2  bf00              NOP      
                  |L2.196|
0000c4  f7fff7ff          BL       ReadKey
0000c8  2801              CMP      r0,#1
0000ca  d1fb              BNE      |L2.196|
                  |L2.204|
;;;129      {
;;;130      }
;;;131    
;;;132      PowerOff();
0000cc  f7fff7ff          BL       PowerOff
;;;133      
;;;134      LCD_Clear(White);
0000d0  4630              MOV      r0,r6
0000d2  f7fff7ff          BL       LCD_Clear
;;;135      DisplayMenu();
0000d6  f7fff7ff          BL       DisplayMenu
;;;136      IntExtOnOffConfig(ENABLE);
0000da  2001              MOVS     r0,#1
0000dc  f7fff7ff          BL       IntExtOnOffConfig
;;;137    }
0000e0  bdf8              POP      {r3-r7,pc}
;;;138    
                          ENDP

0000e2  0000              DCW      0x0000
                  |L2.228|
0000e4  64fe8f96          DCD      0x64fe8f96
                  |L2.232|
0000e8  20506c75          DCB      " Plu"
0000ec  67207468          DCB      "g th"
0000f0  65205553          DCB      "e US"
0000f4  42204361          DCB      "B Ca"
0000f8  626c6520          DCB      "ble "
0000fc  00000000          DCB      "\0\0\0\0"
                  |L2.256|
000100  45786974          DCB      "Exit"
000104  3a202050          DCB      ":  P"
000108  75736820          DCB      "ush "
00010c  4a6f7953          DCB      "JoyS"
000110  7469636b          DCB      "tick"
000114  00000000          DCB      "\0\0\0\0"
                  |L2.280|
000118  00000000          DCD      bDeviceState
                  |L2.284|
00011c  2020546f          DCB      "  To"
000120  2073746f          DCB      " sto"
000124  70205072          DCB      "p Pr"
000128  65737320          DCB      "ess "
00012c  53454c20          DCB      "SEL "
000130  00000000          DCB      "\0\0\0\0"

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

                  Mass_Storage_Recovery PROC
;;;146    void Mass_Storage_Recovery (void)
;;;147    {
000000  b510              PUSH     {r4,lr}
;;;148      /* Disble the JoyStick interrupts */
;;;149      IntExtOnOffConfig(DISABLE);
000002  2000              MOVS     r0,#0
000004  f7fff7ff          BL       IntExtOnOffConfig
                  |L3.8|
;;;150    
;;;151    
;;;152      while(ReadKey() != NOKEY)
000008  f7fff7ff          BL       ReadKey
00000c  2800              CMP      r0,#0
00000e  d1fb              BNE      |L3.8|
;;;153      {
;;;154      }
;;;155    
;;;156      LCD_Clear(White);
000010  f64ff64f          MOV      r4,#0xffff
000014  4620              MOV      r0,r4
000016  f7fff7ff          BL       LCD_Clear
;;;157    
;;;158      RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
00001a  2101              MOVS     r1,#1
00001c  0208              LSLS     r0,r1,#8
00001e  f7fff7ff          BL       RCC_AHBPeriphClockCmd
;;;159      
;;;160      /* Set the Back Color */
;;;161      LCD_SetBackColor(Blue);
000022  201f              MOVS     r0,#0x1f
000024  f7fff7ff          BL       LCD_SetBackColor
;;;162      /* Set the Text Color */
;;;163      LCD_SetTextColor(White); 
000028  4620              MOV      r0,r4
00002a  f7fff7ff          BL       LCD_SetTextColor
;;;164    
;;;165      LCD_DisplayStringLine(Line4, " Erase NAND Content ");
00002e  a111              ADR      r1,|L3.116|
000030  2060              MOVS     r0,#0x60
000032  f7fff7ff          BL       LCD_DisplayStringLine
;;;166      LCD_DisplayStringLine(Line5, "Please wait...      ");
000036  a115              ADR      r1,|L3.140|
000038  2078              MOVS     r0,#0x78
00003a  f7fff7ff          BL       LCD_DisplayStringLine
;;;167     
;;;168      /* FSMC Initialization */
;;;169      FSMC_NAND_Init();
00003e  f7fff7ff          BL       FSMC_NAND_Init
;;;170    
;;;171      NAND_Format();
000042  f7fff7ff          BL       NAND_Format
;;;172    
;;;173      /* Display the "To stop Press SEL" message */
;;;174      LCD_DisplayStringLine(Line4, "     NAND Erased    ");
000046  a117              ADR      r1,|L3.164|
000048  2060              MOVS     r0,#0x60
00004a  f7fff7ff          BL       LCD_DisplayStringLine
;;;175      LCD_DisplayStringLine(Line5, "  To exit Press SEL ");
00004e  a11b              ADR      r1,|L3.188|
000050  2078              MOVS     r0,#0x78
000052  f7fff7ff          BL       LCD_DisplayStringLine
;;;176    
;;;177      /* Loop until SEL key pressed */
;;;178      while(ReadKey() != SEL)
000056  bf00              NOP      
                  |L3.88|
000058  f7fff7ff          BL       ReadKey
00005c  2801              CMP      r0,#1
00005e  d1fb              BNE      |L3.88|
;;;179      {
;;;180      }
;;;181      
;;;182      LCD_Clear(White);
000060  4620              MOV      r0,r4
000062  f7fff7ff          BL       LCD_Clear
;;;183      DisplayMenu();
000066  f7fff7ff          BL       DisplayMenu
;;;184      IntExtOnOffConfig(ENABLE);
00006a  e8bde8bd          POP      {r4,lr}
00006e  2001              MOVS     r0,#1
000070  f7fff7ff          B.W      IntExtOnOffConfig
;;;185    }
;;;186    
                          ENDP

                  |L3.116|
000074  20457261          DCB      " Era"
000078  7365204e          DCB      "se N"
00007c  414e4420          DCB      "AND "
000080  436f6e74          DCB      "Cont"
000084  656e7420          DCB      "ent "
000088  00000000          DCB      "\0\0\0\0"
                  |L3.140|
00008c  506c6561          DCB      "Plea"
000090  73652077          DCB      "se w"
000094  6169742e          DCB      "ait."
000098  2e2e2020          DCB      "..  "
00009c  20202020          DCB      "    "
0000a0  00000000          DCB      "\0\0\0\0"
                  |L3.164|
0000a4  20202020          DCB      "    "
0000a8  204e414e          DCB      " NAN"
0000ac  44204572          DCB      "D Er"
0000b0  61736564          DCB      "ased"
0000b4  20202020          DCB      "    "
0000b8  00000000          DCB      "\0\0\0\0"
                  |L3.188|
0000bc  2020546f          DCB      "  To"
0000c0  20657869          DCB      " exi"
0000c4  74205072          DCB      "t Pr"
0000c8  65737320          DCB      "ess "
0000cc  53454c20          DCB      "SEL "
0000d0  00000000          DCB      "\0\0\0\0"

⌨️ 快捷键说明

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