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

📄 stm32f10x_exti.s79

📁 用于监视I2C通信总线
💻 S79
📖 第 1 页 / 共 2 页
字号:
        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 + -