📄 stm32f10x_exti.s79
字号:
POP {R4,R5,PC}
// 85 }
// 86 }
// 87 else
// 88 {
// 89 /* Disable the selected external lines */
// 90 *(vu32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
??EXTI_Init_0:
LDRB R0,[R0, #+4]
ADDS R0,R0,R1
LDR R1,[R0, #+0]
ANDS R2,R2,R1
STR R2,[R0, #+0]
// 91 }
// 92 }
POP {R4,R5,PC} ;; return
Nop
DATA
??EXTI_Init_1:
DC32 0x40010404
DC32 0x40010408
DC32 0x4001040c
CFI EndBlock cfiBlock1
// 93
// 94 /*******************************************************************************
// 95 * Function Name : EXTI_StructInit
// 96 * Description : Fills each EXTI_InitStruct member with its reset value.
// 97 * Input : - EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure
// 98 * which will be initialized.
// 99 * Output : None
// 100 * Return : None
// 101 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock2 Using cfiCommon0
CFI Function EXTI_StructInit
THUMB
// 102 void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
// 103 {
// 104 EXTI_InitStruct->EXTI_Line = EXTI_LineNone;
EXTI_StructInit:
MOVS R1,#+0
STR R1,[R0, #+0]
// 105 EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
STRB R1,[R0, #+4]
// 106 EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
MOVS R2,#+12
STRB R2,[R0, #+5]
// 107 EXTI_InitStruct->EXTI_LineCmd = DISABLE;
STRB R1,[R0, #+6]
// 108 }
BX LR ;; return
CFI EndBlock cfiBlock2
// 109
// 110 /*******************************************************************************
// 111 * Function Name : EXTI_GenerateSWInterrupt
// 112 * Description : Generates a Software interrupt.
// 113 * Input : - EXTI_Line: specifies the EXTI lines to be enabled or
// 114 * disabled.
// 115 * This parameter can be any combination of EXTI_Linex where
// 116 * x can be (0..18).
// 117 * Output : None
// 118 * Return : None
// 119 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock3 Using cfiCommon0
CFI Function EXTI_GenerateSWInterrupt
THUMB
// 120 void EXTI_GenerateSWInterrupt(u32 EXTI_Line)
// 121 {
// 122 /* Check the parameters */
// 123 assert_param(IS_EXTI_LINE(EXTI_Line));
// 124
// 125 EXTI->SWIER |= EXTI_Line;
EXTI_GenerateSWInterrupt:
LDR.N R1,??EXTI_GenerateSWInterrupt_0 ;; 0x40010410
LDR R2,[R1, #+0]
ORRS R0,R0,R2
STR R0,[R1, #+0]
// 126 }
BX LR ;; return
Nop
DATA
??EXTI_GenerateSWInterrupt_0:
DC32 0x40010410
CFI EndBlock cfiBlock3
// 127
// 128 /*******************************************************************************
// 129 * Function Name : EXTI_GetFlagStatus
// 130 * Description : Checks whether the specified EXTI line flag is set or not.
// 131 * Input : - EXTI_Line: specifies the EXTI line flag to check.
// 132 * This parameter can be:
// 133 * - EXTI_Linex: External interrupt line x where x(0..18)
// 134 * Output : None
// 135 * Return : The new state of EXTI_Line (SET or RESET).
// 136 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock4 Using cfiCommon0
CFI Function EXTI_GetFlagStatus
THUMB
// 137 FlagStatus EXTI_GetFlagStatus(u32 EXTI_Line)
// 138 {
// 139 FlagStatus bitstatus = RESET;
// 140
// 141 /* Check the parameters */
// 142 assert_param(IS_GET_EXTI_LINE(EXTI_Line));
// 143
// 144 if ((EXTI->PR & EXTI_Line) != (u32)RESET)
EXTI_GetFlagStatus:
LDR.N R1,??DataTable6 ;; 0x40010414
LDR R1,[R1, #+0]
ANDS R0,R0,R1
ITT NE
// 145 {
// 146 bitstatus = SET;
MOVNE R0,#+1
BXNE LR
// 147 }
// 148 else
// 149 {
// 150 bitstatus = RESET;
MOVS R0,#+0
// 151 }
// 152 return bitstatus;
BX LR ;; return
CFI EndBlock cfiBlock4
// 153 }
// 154
// 155 /*******************************************************************************
// 156 * Function Name : EXTI_ClearFlag
// 157 * Description : Clears the EXTI抯 line pending flags.
// 158 * Input : - EXTI_Line: specifies the EXTI lines flags to clear.
// 159 * This parameter can be any combination of EXTI_Linex where
// 160 * x can be (0..18).
// 161 * Output : None
// 162 * Return : None
// 163 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock5 Using cfiCommon0
CFI Function EXTI_ClearFlag
THUMB
// 164 void EXTI_ClearFlag(u32 EXTI_Line)
// 165 {
// 166 /* Check the parameters */
// 167 assert_param(IS_EXTI_LINE(EXTI_Line));
// 168
// 169 EXTI->PR = EXTI_Line;
EXTI_ClearFlag:
B.N ?Subroutine0
CFI EndBlock cfiBlock5
// 170 }
// 171
// 172 /*******************************************************************************
// 173 * Function Name : EXTI_GetITStatus
// 174 * Description : Checks whether the specified EXTI line is asserted or not.
// 175 * Input : - EXTI_Line: specifies the EXTI line to check.
// 176 * This parameter can be:
// 177 * - EXTI_Linex: External interrupt line x where x(0..18)
// 178 * Output : None
// 179 * Return : The new state of EXTI_Line (SET or RESET).
// 180 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock6 Using cfiCommon0
CFI Function EXTI_GetITStatus
THUMB
// 181 ITStatus EXTI_GetITStatus(u32 EXTI_Line)
// 182 {
// 183 ITStatus bitstatus = RESET;
// 184 u32 enablestatus = 0;
// 185
// 186 /* Check the parameters */
// 187 assert_param(IS_GET_EXTI_LINE(EXTI_Line));
// 188
// 189 enablestatus = EXTI->IMR & EXTI_Line;
EXTI_GetITStatus:
LDR.N R1,??DataTable4 ;; 0x40010400
// 190
// 191 if (((EXTI->PR & EXTI_Line) != (u32)RESET) && (enablestatus != (u32)RESET))
LDR.N R2,??DataTable6 ;; 0x40010414
LDR R1,[R1, #+0]
LDR R2,[R2, #+0]
ANDS R1,R1,R0
ANDS R0,R0,R2
BEQ.N ??EXTI_GetITStatus_0
CBZ R1,??EXTI_GetITStatus_0
// 192 {
// 193 bitstatus = SET;
MOVS R0,#+1
BX LR
// 194 }
// 195 else
// 196 {
// 197 bitstatus = RESET;
??EXTI_GetITStatus_0:
MOVS R0,#+0
// 198 }
// 199 return bitstatus;
BX LR ;; return
CFI EndBlock cfiBlock6
// 200 }
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable4:
DC32 0x40010400
// 201
// 202 /*******************************************************************************
// 203 * Function Name : EXTI_ClearITPendingBit
// 204 * Description : Clears the EXTI抯 line pending bits.
// 205 * Input : - EXTI_Line: specifies the EXTI lines to clear.
// 206 * This parameter can be any combination of EXTI_Linex where
// 207 * x can be (0..18).
// 208 * Output : None
// 209 * Return : None
// 210 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
THUMB
// 211 void EXTI_ClearITPendingBit(u32 EXTI_Line)
// 212 {
// 213 /* Check the parameters */
// 214 assert_param(IS_EXTI_LINE(EXTI_Line));
// 215
// 216 EXTI->PR = EXTI_Line;
EXTI_ClearITPendingBit:
REQUIRE ?Subroutine0
;; // Fall through to label ?Subroutine0
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock7 Using cfiCommon0
CFI NoFunction
THUMB
?Subroutine0:
LDR.N R1,??DataTable6 ;; 0x40010414
STR R0,[R1, #+0]
BX LR ;; return
CFI EndBlock cfiBlock7
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable6:
DC32 0x40010414
END
// 217 }
// 218
// 219 /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
//
// 238 bytes in segment CODE
//
// 238 bytes of CODE memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -