📄 stm32f10x_fsmc.txt
字号:
; 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 + -