亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? stm32l1xx_exti.c

?? STM32+Grlib
?? C
字號(hào):
/**
  ******************************************************************************
  * @file    stm32l1xx_exti.c
  * @author  MCD Application Team
  * @version V1.0.0
  * @date    31-December-2010
  * @brief   This file provides firmware functions to manage the following 
  *          functionalities of the EXTI peripheral:           
  *           - Initialization and Configuration
  *           - Interrupts and flags management
  *
  *  @verbatim  
  *  
  *          ===================================================================
  *                                     EXTI features
  *          ===================================================================
  *    
  *          External interrupt/event lines are mapped as following:
  *            1- All available GPIO pins are connected to the 16 external 
  *               interrupt/event lines from EXTI0 to EXTI15.
  *            2- EXTI line 16 is connected to the PVD output
  *            3- EXTI line 17 is connected to the RTC Alarm event
  *            4- EXTI line 18 is connected to the USB Device FS wakeup event
  *            5- EXTI line 19 is connected to the RTC Tamper and TimeStamp events
  *            6- EXTI line 20 is connected to the RTC Wakeup event
  *            7- EXTI line 21 is connected to the Comparator 1 wakeup event 
  *            8- EXTI line 22 is connected to the Comparator 2 wakeup event
  *
  *          ===================================================================
  *                                 How to use this driver
  *          ===================================================================  
  *              
  *          In order to use an I/O pin as an external interrupt source, follow
  *          steps below:
  *            1- Configure the I/O in input mode using GPIO_Init()
  *            2- Select the input source pin for the EXTI line using 
  *               SYSCFG_EXTILineConfig()
  *            3- Select the mode(interrupt, event) and configure the trigger 
  *               selection (Rising, falling or both) using EXTI_Init()
  *            4- Configure NVIC IRQ channel mapped to the EXTI line using NVIC_Init()
  *   
  *@note     SYSCFG APB clock must be enabled to get write access to SYSCFG_EXTICRx
  *          registers using RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  *          
  *  @endverbatim                  
  *
  ******************************************************************************
  * @attention
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2010 STMicroelectronics</center></h2>
  ******************************************************************************  
  */ 

/* Includes ------------------------------------------------------------------*/
#include "stm32l1xx_exti.h"

/** @addtogroup STM32L1xx_StdPeriph_Driver
  * @{
  */

/** @defgroup EXTI 
  * @brief EXTI driver modules
  * @{
  */

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define EXTI_LINENONE    ((uint32_t)0x00000)  /* No interrupt selected */

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/** @defgroup EXTI_Private_Functions
  * @{
  */

/** @defgroup EXTI_Group1 Initialization and Configuration functions
 *  @brief   Initialization and Configuration functions 
 *
@verbatim   
 ===============================================================================
                  Initialization and Configuration functions
 ===============================================================================  

@endverbatim
  * @{
  */

/**
  * @brief  Deinitializes the EXTI peripheral registers to their default reset values.
  * @param  None
  * @retval None
  */
void EXTI_DeInit(void)
{
  EXTI->IMR = 0x00000000;
  EXTI->EMR = 0x00000000;
  EXTI->RTSR = 0x00000000; 
  EXTI->FTSR = 0x00000000; 
  EXTI->PR = 0x007FFFFF;
}

/**
  * @brief  Initializes the EXTI peripheral according to the specified
  *   parameters in the EXTI_InitStruct.
  *    EXTI_Line specifies the EXTI line (EXTI0....EXTI22)  
  *    EXTI_Mode specifies which EXTI line is used as interrupt or an event
  *    EXTI_Trigger selects the trigger. When the trigger occurs, interrupt
  *                 pending bit will be set
  *    EXTI_LineCmd controls (Enable/Disable) the EXTI line
  * @param  EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure
  *   that contains the configuration information for the EXTI peripheral.
  * @retval None
  */
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
{
  uint32_t tmp = 0;

  /* Check the parameters */
  assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
  assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
  assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));  
  assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));

  tmp = (uint32_t)EXTI_BASE;
     
  if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
  {
    /* Clear EXTI line configuration */
    EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;
    EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;
    
    tmp += EXTI_InitStruct->EXTI_Mode;

    *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;

    /* Clear Rising Falling edge configuration */
    EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
    EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
    
    /* Select the trigger for the selected external interrupts */
    if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
    {
      /* Rising Falling edge */
      EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
      EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
    }
    else
    {
      tmp = (uint32_t)EXTI_BASE;
      tmp += EXTI_InitStruct->EXTI_Trigger;

      *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
    }
  }
  else
  {
    tmp += EXTI_InitStruct->EXTI_Mode;

    /* Disable the selected external lines */
    *(__IO uint32_t *) tmp &= ~EXTI_InitStruct->EXTI_Line;
  }
}

/**
  * @brief  Fills each EXTI_InitStruct member with its reset value.
  * @param  EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure which will
  *   be initialized.
  * @retval None
  */
void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
{
  EXTI_InitStruct->EXTI_Line = EXTI_LINENONE;
  EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStruct->EXTI_LineCmd = DISABLE;
}

/**
  * @brief  Generates a Software interrupt on selected EXTI line.
  * @param  EXTI_Line: specifies the EXTI line on which the software interrupt
  *         will be generated.
  *   This parameter can be any combination of EXTI_Linex where x can be (0..22).
  * @retval None
  */
void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
{
  /* Check the parameters */
  assert_param(IS_EXTI_LINE(EXTI_Line));
  
  EXTI->SWIER |= EXTI_Line;
}

/**
  * @}
  */

/** @defgroup EXTI_Group2 Interrupts and flags management functions
 *  @brief   Interrupts and flags management functions 
 *
@verbatim   
 ===============================================================================
                  Interrupts and flags management functions
 ===============================================================================  

@endverbatim
  * @{
  */

/**
  * @brief  Checks whether the specified EXTI line flag is set or not.
  * @param  EXTI_Line: specifies the EXTI line flag to check.
  *   This parameter can be:
  *     @arg EXTI_Linex: External interrupt line x where x(0..22)
  * @retval The new state of EXTI_Line (SET or RESET).
  */
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line)
{
  FlagStatus bitstatus = RESET;
  /* Check the parameters */
  assert_param(IS_GET_EXTI_LINE(EXTI_Line));
  
  if ((EXTI->PR & EXTI_Line) != (uint32_t)RESET)
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  return bitstatus;
}

/**
  * @brief  Clears the EXTI抯 line pending flags.
  * @param  EXTI_Line: specifies the EXTI lines flags to clear.
  *   This parameter can be any combination of EXTI_Linex where x can be (0..22).
  * @retval None
  */
void EXTI_ClearFlag(uint32_t EXTI_Line)
{
  /* Check the parameters */
  assert_param(IS_EXTI_LINE(EXTI_Line));
  
  EXTI->PR = EXTI_Line;
}

/**
  * @brief  Checks whether the specified EXTI line is asserted or not.
  * @param  EXTI_Line: specifies the EXTI line to check.
  *   This parameter can be:
  *     @arg EXTI_Linex: External interrupt line x where x(0..22)
  * @retval The new state of EXTI_Line (SET or RESET).
  */
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line)
{
  ITStatus bitstatus = RESET;
  uint32_t enablestatus = 0;
  /* Check the parameters */
  assert_param(IS_GET_EXTI_LINE(EXTI_Line));
  
  enablestatus =  EXTI->IMR & EXTI_Line;
  if (((EXTI->PR & EXTI_Line) != (uint32_t)RESET) && (enablestatus != (uint32_t)RESET))
  {
    bitstatus = SET;
  }
  else
  {
    bitstatus = RESET;
  }
  return bitstatus;
}

/**
  * @brief  Clears the EXTI抯 line pending bits.
  * @param  EXTI_Line: specifies the EXTI lines to clear.
  *   This parameter can be any combination of EXTI_Linex where x can be (0..22).
  * @retval None
  */
void EXTI_ClearITPendingBit(uint32_t EXTI_Line)
{
  /* Check the parameters */
  assert_param(IS_EXTI_LINE(EXTI_Line));
  
  EXTI->PR = EXTI_Line;
}

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/**
  * @}
  */

/******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品自拍毛片| 国产成人精品综合在线观看| 国产欧美日产一区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 美女性感视频久久| 亚洲免费视频成人| 中文一区在线播放| 久久蜜臀中文字幕| 欧美一区永久视频免费观看| 色婷婷综合久色| 国产福利精品一区| 激情成人综合网| 日韩国产在线观看一区| 亚洲精品第一国产综合野| 国产肉丝袜一区二区| 精品日韩在线观看| 久久久亚洲国产美女国产盗摄| 337p亚洲精品色噜噜| 一本大道久久a久久精二百| 成人免费视频caoporn| 国产伦精品一区二区三区免费迷| 石原莉奈在线亚洲三区| 亚洲v日本v欧美v久久精品| 一区二区三区四区乱视频| 国产精品毛片无遮挡高清| 久久精品视频在线看| 久久先锋影音av鲁色资源网| 日韩午夜在线观看视频| 欧美日韩高清在线播放| 欧美日韩视频在线一区二区| 色中色一区二区| 日本道精品一区二区三区| 92国产精品观看| 99精品在线免费| 99久久99久久精品国产片果冻| 成人av免费在线播放| 成人性生交大片免费看视频在线| 国产精一区二区三区| 国产传媒久久文化传媒| 国产馆精品极品| 波多野结衣视频一区| 不卡一区二区中文字幕| av在线不卡观看免费观看| 91麻豆精品视频| 91久久线看在观草草青青| 色婷婷精品久久二区二区蜜臂av | 精品一区二区成人精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 奇米影视7777精品一区二区| 久久不见久久见中文字幕免费| 久88久久88久久久| 成人免费视频视频在线观看免费| 成人视屏免费看| 在线一区二区视频| 欧美日韩国产bt| 精品国产乱码久久久久久浪潮| 欧美成人性战久久| 国产精品卡一卡二| 亚洲欧美一区二区不卡| 日韩中文字幕区一区有砖一区| 久久99国产精品久久99果冻传媒| 国产精品亚洲第一 | 欧美tickling挠脚心丨vk| 亚洲高清中文字幕| 麻豆精品久久精品色综合| 国精产品一区一区三区mba桃花| 国产成人av资源| 欧美午夜精品一区二区三区| 欧美一区二区三区在线观看| 久久久久国产精品麻豆| 一区二区三区欧美久久| 裸体歌舞表演一区二区| k8久久久一区二区三区 | 欧美福利电影网| 久久久精品tv| 亚洲一区二区不卡免费| 精品午夜一区二区三区在线观看| 成人动漫一区二区三区| 欧美视频一区二区三区在线观看| 日韩一区二区麻豆国产| 亚洲欧洲日韩av| 免费欧美高清视频| 91香蕉视频污在线| 欧美本精品男人aⅴ天堂| 亚洲人快播电影网| 紧缚捆绑精品一区二区| 色8久久精品久久久久久蜜| 精品国产制服丝袜高跟| 一区二区三区中文免费| 国内精品久久久久影院薰衣草| 色8久久人人97超碰香蕉987| 久久久青草青青国产亚洲免观| 亚洲国产另类av| 成人午夜视频在线| 日韩欧美综合一区| 亚洲小说欧美激情另类| 国产夫妻精品视频| 日韩一区二区三区免费看| 亚洲卡通欧美制服中文| 国产自产视频一区二区三区| 欧美日韩国产高清一区| 亚洲欧美日韩国产手机在线 | 高清久久久久久| 日韩亚洲欧美中文三级| 亚洲午夜国产一区99re久久| 国产91丝袜在线播放| 日韩欧美一区二区在线视频| 一区二区三区四区av| 成人性生交大片免费| 精品国产自在久精品国产| 亚洲成人动漫在线观看| 色94色欧美sute亚洲13| 国产精品久久久久影视| 国产精品77777| 欧美精品一区二区三区蜜桃| 亚洲成a人片综合在线| 在线精品亚洲一区二区不卡| 中文字幕免费一区| 国产成人av电影| 国产日韩欧美电影| 国产米奇在线777精品观看| 日韩精品一区国产麻豆| 日韩av电影一区| 3d动漫精品啪啪1区2区免费| 亚洲国产日韩a在线播放 | 国产欧美日韩在线看| 国产乱淫av一区二区三区| 日韩精品中文字幕在线一区| 手机精品视频在线观看| 欧美美女bb生活片| 亚洲国产视频一区二区| 欧美人成免费网站| 日本成人中文字幕在线视频| 3751色影院一区二区三区| 日本视频中文字幕一区二区三区| 久久精品在线免费观看| 国产福利一区二区| 中文字幕在线不卡国产视频| av毛片久久久久**hd| 亚洲欧美日韩在线不卡| 91久久久免费一区二区| 午夜国产精品影院在线观看| 欧美日本在线播放| 美女脱光内衣内裤视频久久网站 | 国产精品青草综合久久久久99| 国产69精品久久久久777| 国产精品欧美一级免费| 99精品黄色片免费大全| 亚洲午夜精品久久久久久久久| 6080日韩午夜伦伦午夜伦| 久久精品国产久精国产爱| 国产亚洲综合性久久久影院| 成人综合日日夜夜| 亚洲精品高清在线| 欧美一区二区啪啪| 韩国欧美一区二区| 中文字幕中文乱码欧美一区二区| 在线看日韩精品电影| 日韩电影在线看| 久久久久成人黄色影片| 99久久777色| 全部av―极品视觉盛宴亚洲| 久久这里只有精品视频网| www.日韩av| 午夜精品一区二区三区电影天堂| 日韩一级片网址| 成人毛片视频在线观看| 亚洲主播在线观看| 精品久久久久久久人人人人传媒| www.亚洲激情.com| 天堂久久一区二区三区| 久久久久久久电影| 欧美三级一区二区| 国产成人综合网站| 亚洲成人自拍一区| 久久蜜桃一区二区| 欧美日韩综合不卡| 成人在线综合网| 日韩国产欧美在线观看| 国产精品久久久爽爽爽麻豆色哟哟 | 色一情一伦一子一伦一区| 奇米色777欧美一区二区| 国产精品成人一区二区三区夜夜夜| 欧美唯美清纯偷拍| 处破女av一区二区| 免费看精品久久片| 亚洲女同ⅹxx女同tv| 久久久久久一二三区| 欧美高清在线视频| 欧美一区二区三区免费大片| av在线综合网| 麻豆成人91精品二区三区| 亚洲男女一区二区三区| 久久久亚洲高清| 日韩视频免费直播| 91国产福利在线| av福利精品导航| 国产精品一区二区三区99| 天天色综合成人网| 一区二区三区四区蜜桃|