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

📄 stm32f10x_fsmc.txt

📁 STM32F103ZET6+UCOSII+UCGUI源码
💻 TXT
📖 第 1 页 / 共 4 页
字号:
; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\stm32f10x_fsmc.o --depend=.\Obj\stm32f10x_fsmc.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 ..\..\..\FWLib\library\src\stm32f10x_fsmc.c]
                          THUMB

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

                  FSMC_ClearFlag PROC
;;;748    *******************************************************************************/                   
;;;749    void FSMC_ClearFlag(u32 FSMC_Bank, u32 FSMC_FLAG)
000000  f04f4220          MOV      r2,#0xa0000000
;;;750    {
;;;751     /* Check the parameters */
;;;752      assert_param(IS_FSMC_GETFLAG_BANK(FSMC_Bank));
;;;753      assert_param(IS_FSMC_CLEAR_FLAG(FSMC_FLAG)) ;
;;;754        
;;;755      if(FSMC_Bank == FSMC_Bank2_NAND)
000004  2810              CMP      r0,#0x10
000006  d103              BNE      |L1.16|
;;;756      {
;;;757        FSMC_Bank2->SR2 &= ~FSMC_FLAG; 
000008  6e50              LDR      r0,[r2,#0x64]
00000a  4388              BICS     r0,r0,r1
00000c  6650              STR      r0,[r2,#0x64]
;;;758      }  
;;;759      else if(FSMC_Bank == FSMC_Bank3_NAND)
;;;760      {
;;;761        FSMC_Bank3->SR3 &= ~FSMC_FLAG;
;;;762      }
;;;763      /* FSMC_Bank4_PCCARD*/
;;;764      else
;;;765      {
;;;766        FSMC_Bank4->SR4 &= ~FSMC_FLAG;
;;;767      }
;;;768    }
00000e  4770              BX       lr
                  |L1.16|
000010  f5b07f80          CMP      r0,#0x100             ;759
000014  d101              BNE      |L1.26|
000016  3284              ADDS     r2,r2,#0x84           ;759
000018  e000              B        |L1.28|
                  |L1.26|
00001a  32a4              ADDS     r2,r2,#0xa4           ;761
                  |L1.28|
00001c  6810              LDR      r0,[r2,#0]            ;766
00001e  4388              BICS     r0,r0,r1              ;766
000020  6010              STR      r0,[r2,#0]            ;766
000022  4770              BX       lr
;;;769    
                          ENDP


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

                  FSMC_ClearITPendingBit PROC
;;;839    *******************************************************************************/
;;;840    void FSMC_ClearITPendingBit(u32 FSMC_Bank, u32 FSMC_IT)
000000  f04f4220          MOV      r2,#0xa0000000
;;;841    {
;;;842      /* Check the parameters */
;;;843      assert_param(IS_FSMC_IT_BANK(FSMC_Bank));
;;;844      assert_param(IS_FSMC_IT(FSMC_IT));
;;;845        
;;;846      if(FSMC_Bank == FSMC_Bank2_NAND)
000004  2810              CMP      r0,#0x10
000006  d104              BNE      |L2.18|
;;;847      {
;;;848        FSMC_Bank2->SR2 &= ~(FSMC_IT >> 3); 
000008  6e50              LDR      r0,[r2,#0x64]
00000a  ea2000d1          BIC      r0,r0,r1,LSR #3
00000e  6650              STR      r0,[r2,#0x64]
;;;849      }  
;;;850      else if(FSMC_Bank == FSMC_Bank3_NAND)
;;;851      {
;;;852        FSMC_Bank3->SR3 &= ~(FSMC_IT >> 3);
;;;853      }
;;;854      /* FSMC_Bank4_PCCARD*/
;;;855      else
;;;856      {
;;;857        FSMC_Bank4->SR4 &= ~(FSMC_IT >> 3);
;;;858      }
;;;859    }
000010  4770              BX       lr
                  |L2.18|
000012  f5b07f80          CMP      r0,#0x100             ;850
000016  d101              BNE      |L2.28|
000018  3284              ADDS     r2,r2,#0x84           ;850
00001a  e000              B        |L2.30|
                  |L2.28|
00001c  32a4              ADDS     r2,r2,#0xa4           ;852
                  |L2.30|
00001e  6810              LDR      r0,[r2,#0]            ;857
000020  ea2000d1          BIC      r0,r0,r1,LSR #3       ;857
000024  6010              STR      r0,[r2,#0]            ;857
000026  4770              BX       lr
;;;860    
                          ENDP


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

                  FSMC_GetECC PROC
;;;597    *******************************************************************************/
;;;598    u32 FSMC_GetECC(u32 FSMC_Bank)
000000  f04f4120          MOV      r1,#0xa0000000
;;;599    {
;;;600      u32 eccval = 0x00000000;
;;;601      
;;;602      if(FSMC_Bank == FSMC_Bank2_NAND)
000004  2810              CMP      r0,#0x10
000006  d101              BNE      |L3.12|
;;;603      {
;;;604        /* Get the ECCR2 register value */
;;;605        eccval = FSMC_Bank2->ECCR2;
000008  6f48              LDR      r0,[r1,#0x74]
;;;606      }
;;;607      else
;;;608      {
;;;609        /* Get the ECCR3 register value */
;;;610        eccval = FSMC_Bank3->ECCR3;
;;;611      }
;;;612      /* Return the error correction code value */
;;;613      return(eccval);
;;;614    }
00000a  4770              BX       lr
                  |L3.12|
00000c  f8d10094          LDR      r0,[r1,#0x94]         ;610
000010  4770              BX       lr
;;;615    
                          ENDP


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

                  FSMC_GetFlagStatus PROC
;;;696    *******************************************************************************/                   
;;;697    FlagStatus FSMC_GetFlagStatus(u32 FSMC_Bank, u32 FSMC_FLAG)
000000  4603              MOV      r3,r0
;;;698    {
;;;699      FlagStatus bitstatus = RESET;
000002  2000              MOVS     r0,#0
;;;700      u32 tmpsr = 0x00000000;
;;;701      
;;;702      /* Check the parameters */
;;;703      assert_param(IS_FSMC_GETFLAG_BANK(FSMC_Bank));
;;;704      assert_param(IS_FSMC_GET_FLAG(FSMC_FLAG));
;;;705      
;;;706      if(FSMC_Bank == FSMC_Bank2_NAND)
;;;707      {
;;;708        tmpsr = FSMC_Bank2->SR2;
000004  f04f4220          MOV      r2,#0xa0000000
000008  2b10              CMP      r3,#0x10              ;706
00000a  d101              BNE      |L4.16|
00000c  6e52              LDR      r2,[r2,#0x64]
00000e  e007              B        |L4.32|
                  |L4.16|
;;;709      }  
;;;710      else if(FSMC_Bank == FSMC_Bank3_NAND)
000010  f5b37f80          CMP      r3,#0x100
000014  d102              BNE      |L4.28|
;;;711      {
;;;712        tmpsr = FSMC_Bank3->SR3;
000016  f8d22084          LDR      r2,[r2,#0x84]
00001a  e001              B        |L4.32|
                  |L4.28|
;;;713      }
;;;714      /* FSMC_Bank4_PCCARD*/
;;;715      else
;;;716      {
;;;717        tmpsr = FSMC_Bank4->SR4;
00001c  f8d220a4          LDR      r2,[r2,#0xa4]
                  |L4.32|
;;;718      } 
;;;719      
;;;720      /* Get the flag status */
;;;721      if ((tmpsr & FSMC_FLAG) != (u16)RESET )
000020  420a              TST      r2,r1
000022  d000              BEQ      |L4.38|
;;;722      {
;;;723        bitstatus = SET;
000024  2001              MOVS     r0,#1
                  |L4.38|
;;;724      }
;;;725      else
;;;726      {
;;;727        bitstatus = RESET;
;;;728      }
;;;729      /* Return the flag status */
;;;730      return bitstatus;
;;;731    }
000026  4770              BX       lr
;;;732    
                          ENDP


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

                  FSMC_GetITStatus PROC
;;;785    *******************************************************************************/ 
;;;786    ITStatus FSMC_GetITStatus(u32 FSMC_Bank, u32 FSMC_IT)
000000  4603              MOV      r3,r0
;;;787    {
;;;788      ITStatus bitstatus = RESET;
000002  2000              MOVS     r0,#0
;;;789      u32 tmpsr = 0x0, itstatus = 0x0, itenable = 0x0; 
;;;790      
;;;791      /* Check the parameters */
;;;792      assert_param(IS_FSMC_IT_BANK(FSMC_Bank));
;;;793      assert_param(IS_FSMC_GET_IT(FSMC_IT));
;;;794      
;;;795      if(FSMC_Bank == FSMC_Bank2_NAND)
;;;796      {
;;;797        tmpsr = FSMC_Bank2->SR2;
000004  f04f4220          MOV      r2,#0xa0000000
000008  2b10              CMP      r3,#0x10              ;795
00000a  d101              BNE      |L5.16|
00000c  6e52              LDR      r2,[r2,#0x64]
00000e  e007              B        |L5.32|
                  |L5.16|
;;;798      }  
;;;799      else if(FSMC_Bank == FSMC_Bank3_NAND)
000010  f5b37f80          CMP      r3,#0x100
000014  d102              BNE      |L5.28|
;;;800      {
;;;801        tmpsr = FSMC_Bank3->SR3;
000016  f8d22084          LDR      r2,[r2,#0x84]
00001a  e001              B        |L5.32|
                  |L5.28|
;;;802      }
;;;803      /* FSMC_Bank4_PCCARD*/
;;;804      else
;;;805      {
;;;806        tmpsr = FSMC_Bank4->SR4;
00001c  f8d220a4          LDR      r2,[r2,#0xa4]
                  |L5.32|
;;;807      } 
;;;808      
;;;809      itstatus = tmpsr & FSMC_IT;
000020  420a              TST      r2,r1
;;;810      
;;;811      itenable = tmpsr & (FSMC_IT >> 3);
000022  ea0201d1          AND      r1,r2,r1,LSR #3
;;;812    
;;;813      if ((itstatus != (u32)RESET)  && (itenable != (u32)RESET))
000026  d002              BEQ      |L5.46|
000028  2900              CMP      r1,#0
00002a  d000              BEQ      |L5.46|
;;;814      {
;;;815        bitstatus = SET;
00002c  2001              MOVS     r0,#1
                  |L5.46|
;;;816      }
;;;817      else
;;;818      {
;;;819        bitstatus = RESET;
;;;820      }
;;;821      return bitstatus; 
;;;822    }
00002e  4770              BX       lr
;;;823    
                          ENDP


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

                  FSMC_ITConfig PROC
;;;634    *******************************************************************************/
;;;635    void FSMC_ITConfig(u32 FSMC_Bank, u32 FSMC_IT, FunctionalState NewState)
000000  b510              PUSH     {r4,lr}
;;;636    {
;;;637      assert_param(IS_FSMC_IT_BANK(FSMC_Bank));
;;;638      assert_param(IS_FSMC_IT(FSMC_IT));	
;;;639      assert_param(IS_FUNCTIONAL_STATE(NewState));
;;;640      
;;;641      if (NewState != DISABLE)
;;;642      {
;;;643        /* Enable the selected FSMC_Bank2 interrupts */
;;;644        if(FSMC_Bank == FSMC_Bank2_NAND)
;;;645        {
;;;646          FSMC_Bank2->SR2 |= FSMC_IT;
;;;647        }
;;;648        /* Enable the selected FSMC_Bank3 interrupts */
;;;649        else if (FSMC_Bank == FSMC_Bank3_NAND)
000002  f44f7480          MOV      r4,#0x100
000006  f04f4320          MOV      r3,#0xa0000000        ;646
00000a  b16a              CBZ      r2,|L6.40|
00000c  2810              CMP      r0,#0x10              ;644
00000e  d102              BNE      |L6.22|
000010  6e58              LDR      r0,[r3,#0x64]         ;646
000012  4308              ORRS     r0,r0,r1              ;646
000014  e00c              B        |L6.48|
                  |L6.22|
000016  42a0              CMP      r0,r4
000018  d101              BNE      |L6.30|
00001a  3384              ADDS     r3,r3,#0x84
;;;650        {
;;;651          FSMC_Bank3->SR3 |= FSMC_IT;
00001c  e000              B        |L6.32|
                  |L6.30|
00001e  33a4              ADDS     r3,r3,#0xa4
                  |L6.32|
;;;652        }
;;;653        /* Enable the selected FSMC_Bank4 interrupts */
;;;654        else
;;;655        {
;;;656          FSMC_Bank4->SR4 |= FSMC_IT;    
000020  6818              LDR      r0,[r3,#0]
000022  4308              ORRS     r0,r0,r1
                  |L6.36|
000024  6018              STR      r0,[r3,#0]
;;;657        }
;;;658      }
;;;659      else

⌨️ 快捷键说明

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