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

📄 mass_storage.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] 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..\..\Config -I..\..\GUI\Core -I..\..\GUI\Font -I..\..\GUI\ConvertColor -I..\..\GUI\AntiAlias -I..\..\GUI\ConvertMono -I..\..\GUI\JPEG -I..\..\GUI\MemDev -I..\..\GUI\MultiLayer -I..\..\GUI\Widget -I..\..\GUI\WM -IC:\Keil\ARM\INC\ST\STM32F10x ..\..\source\mass_storage.c]
                          THUMB

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

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


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

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

                  |L2.116|
000074  204572617365204e414e4420436f6e74656e742000        DCB      " Erase NAND Content ",0
000089  00                DCB      0
00008a  00                DCB      0
00008b  00                DCB      0
                  |L2.140|
00008c  506c6561736520776169742e2e2e20202020202000        DCB      "Please wait...      ",0
0000a1  00                DCB      0
0000a2  00                DCB      0
0000a3  00                DCB      0
                  |L2.164|
0000a4  20202020204e414e44204572617365642020202000        DCB      "     NAND Erased    ",0
0000b9  00                DCB      0
0000ba  00                DCB      0
0000bb  00                DCB      0
                  |L2.188|
0000bc  2020546f20657869742050726573732053454c2000        DCB      "  To exit Press SEL ",0
0000d1  00                DCB      0
0000d2  00                DCB      0
0000d3  00                DCB      0

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

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

0000e2  0000              DCW      0x0000
                  |L3.228|
                          DCD      0x641efc08
                  |L3.232|
0000e8  20506c75672074686520555342204361626c652000        DCB      " Plug the USB Cable ",0
0000fd  00                DCB      0
0000fe  00                DCB      0
0000ff  00                DCB      0
                  |L3.256|
000100  457869743a202050757368204a6f79537469636b00        DCB      "Exit:  Push JoyStick",0
000115  00                DCB      0
000116  00                DCB      0
000117  00                DCB      0
                  |L3.280|
                          DCD      bDeviceState
                  |L3.284|
00011c  2020546f2073746f702050726573732053454c2000        DCB      "  To stop Press SEL ",0
000131  00                DCB      0
000132  00                DCB      0
000133  00                DCB      0

⌨️ 快捷键说明

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