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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stm32f10x_gpio.c

?? STM32手持式示波器源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**
  ******************************************************************************
  * @file    stm32f10x_gpio.c
  * @author  MCD Application Team
  * @version V3.1.2
  * @date    09/28/2009
  * @brief   This file provides all the GPIO firmware functions.
  ******************************************************************************
  * @copy
  *
  * 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 2009 STMicroelectronics</center></h2>
  */ 

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

/** @addtogroup STM32F10x_StdPeriph_Driver
  * @{
  */

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

/** @defgroup GPIO_Private_TypesDefinitions
  * @{
  */

/**
  * @}
  */

/** @defgroup GPIO_Private_Defines
  * @{
  */

/* ------------ RCC registers bit address in the alias region ----------------*/
#define AFIO_OFFSET                 (AFIO_BASE - PERIPH_BASE)

/* --- EVENTCR Register -----*/

/* Alias word address of EVOE bit */
#define EVCR_OFFSET                 (AFIO_OFFSET + 0x00)
#define EVOE_BitNumber              ((uint8_t)0x07)
#define EVCR_EVOE_BB                (PERIPH_BB_BASE + (EVCR_OFFSET * 32) + (EVOE_BitNumber * 4))


/* ---  MAPR Register ---*/ 
/* Alias word address of MII_RMII_SEL bit */ 
#define MAPR_OFFSET                 (AFIO_OFFSET + 0x04) 
#define MII_RMII_SEL_BitNumber      ((uint8_t)0x17) 
#define MAPR_MII_RMII_SEL_BB        (PERIPH_BB_BASE + (MAPR_OFFSET * 32) + (MII_RMII_SEL_BitNumber * 4))


#define EVCR_PORTPINCONFIG_MASK     ((uint16_t)0xFF80)
#define LSB_MASK                    ((uint16_t)0xFFFF)
#define DBGAFR_POSITION_MASK        ((uint32_t)0x000F0000)
#define DBGAFR_SWJCFG_MASK          ((uint32_t)0xF0FFFFFF)
#define DBGAFR_LOCATION_MASK        ((uint32_t)0x00200000)
#define DBGAFR_NUMBITS_MASK         ((uint32_t)0x00100000)
/**
  * @}
  */

/** @defgroup GPIO_Private_Macros
  * @{
  */

/**
  * @}
  */

/** @defgroup GPIO_Private_Variables
  * @{
  */

/**
  * @}
  */

/** @defgroup GPIO_Private_FunctionPrototypes
  * @{
  */

/**
  * @}
  */

/** @defgroup GPIO_Private_Functions
  * @{
  */

/**
  * @brief  Deinitializes the GPIOx peripheral registers to their default reset values.
  * @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.
  * @retval None
  */
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  
  if (GPIOx == GPIOA)
  {
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA, DISABLE);
  }
  else if (GPIOx == GPIOB)
  {
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE);
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, DISABLE);
  }
  else if (GPIOx == GPIOC)
  {
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, ENABLE);
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOC, DISABLE);
  }
  else if (GPIOx == GPIOD)
  {
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, ENABLE);
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOD, DISABLE);
  }    
  else if (GPIOx == GPIOE)
  {
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE, ENABLE);
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOE, DISABLE);
  } 
  else if (GPIOx == GPIOF)
  {
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOF, ENABLE);
    RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOF, DISABLE);
  }
  else
  {
    if (GPIOx == GPIOG)
    {
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOG, ENABLE);
      RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOG, DISABLE);
    }
  }
}

/**
  * @brief  Deinitializes the Alternate Functions (remap, event control
  *   and EXTI configuration) registers to their default reset values.
  * @param  None
  * @retval None
  */
void GPIO_AFIODeInit(void)
{
  RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, ENABLE);
  RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, DISABLE);
}

/**
  * @brief  Initializes the GPIOx peripheral according to the specified
  *   parameters in the GPIO_InitStruct.
  * @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.
  * @param  GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that
  *   contains the configuration information for the specified GPIO peripheral.
  * @retval None
  */
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
{
  uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00;
  uint32_t tmpreg = 0x00, pinmask = 0x00;
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
  assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));  
  
/*---------------------------- GPIO Mode Configuration -----------------------*/
  currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F);
  if ((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00)
  { 
    /* Check the parameters */
    assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));
    /* Output mode */
    currentmode |= (uint32_t)GPIO_InitStruct->GPIO_Speed;
  }
/*---------------------------- GPIO CRL Configuration ------------------------*/
  /* Configure the eight low port pins */
  if (((uint32_t)GPIO_InitStruct->GPIO_Pin & ((uint32_t)0x00FF)) != 0x00)
  {
    tmpreg = GPIOx->CRL;
    for (pinpos = 0x00; pinpos < 0x08; pinpos++)
    {
      pos = ((uint32_t)0x01) << pinpos;
      /* Get the port pins position */
      currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;
      if (currentpin == pos)
      {
        pos = pinpos << 2;
        /* Clear the corresponding low control register bits */
        pinmask = ((uint32_t)0x0F) << pos;
        tmpreg &= ~pinmask;
        /* Write the mode configuration in the corresponding bits */
        tmpreg |= (currentmode << pos);
        /* Reset the corresponding ODR bit */
        if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
        {
          GPIOx->BRR = (((uint32_t)0x01) << pinpos);
        }
        else
        {
          /* Set the corresponding ODR bit */
          if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
          {
            GPIOx->BSRR = (((uint32_t)0x01) << pinpos);
          }
        }
      }
    }
    GPIOx->CRL = tmpreg;
  }
/*---------------------------- GPIO CRH Configuration ------------------------*/
  /* Configure the eight high port pins */
  if (GPIO_InitStruct->GPIO_Pin > 0x00FF)
  {
    tmpreg = GPIOx->CRH;
    for (pinpos = 0x00; pinpos < 0x08; pinpos++)
    {
      pos = (((uint32_t)0x01) << (pinpos + 0x08));
      /* Get the port pins position */
      currentpin = ((GPIO_InitStruct->GPIO_Pin) & pos);
      if (currentpin == pos)
      {
        pos = pinpos << 2;
        /* Clear the corresponding high control register bits */
        pinmask = ((uint32_t)0x0F) << pos;
        tmpreg &= ~pinmask;
        /* Write the mode configuration in the corresponding bits */
        tmpreg |= (currentmode << pos);
        /* Reset the corresponding ODR bit */
        if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
        {
          GPIOx->BRR = (((uint32_t)0x01) << (pinpos + 0x08));
        }
        /* Set the corresponding ODR bit */
        if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
        {
          GPIOx->BSRR = (((uint32_t)0x01) << (pinpos + 0x08));
        }
      }
    }
    GPIOx->CRH = tmpreg;
  }
}

/**
  * @brief  Fills each GPIO_InitStruct member with its default value.
  * @param  GPIO_InitStruct : pointer to a GPIO_InitTypeDef structure which will
  *   be initialized.
  * @retval None
  */
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
{
  /* Reset GPIO init structure parameters values */
  GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
  GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
}

/**
  * @brief  Reads the specified input port pin.
  * @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.
  * @param  GPIO_Pin:  specifies the port bit to read.
  *   This parameter can be GPIO_Pin_x where x can be (0..15).
  * @retval The input port pin value.
  */
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  uint8_t bitstatus = 0x00;
  
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); 
  
  if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)Bit_RESET)
  {
    bitstatus = (uint8_t)Bit_SET;
  }
  else
  {
    bitstatus = (uint8_t)Bit_RESET;
  }
  return bitstatus;
}

/**
  * @brief  Reads the specified GPIO input data port.
  * @param  GPIOx: where x can be (A..G) to select the GPIO peripheral.
  * @retval GPIO input data port value.
  */
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
{
  /* Check the parameters */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  
  return ((uint16_t)GPIOx->IDR);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费观看国产| 国产精品一区二区三区网站| 国产精品国产精品国产专区不片| 在线区一区二视频| 成人国产视频在线观看 | 欧美一级高清片| 欧美群妇大交群的观看方式| 欧美在线短视频| 69堂亚洲精品首页| 精品国产免费人成电影在线观看四季 | 成人性色生活片免费看爆迷你毛片| 久久婷婷国产综合精品青草 | 中文字幕精品一区| 国产欧美精品国产国产专区| 久久精品网站免费观看| 国产欧美精品一区| 亚洲美女区一区| 日本中文字幕一区二区视频| 麻豆精品国产传媒mv男同| 国产主播一区二区三区| 成人av网站大全| 欧美年轻男男videosbes| 精品福利在线导航| 最好看的中文字幕久久| 亚洲va国产va欧美va观看| 日韩高清不卡一区二区三区| 国产成人精品一区二| 色婷婷精品久久二区二区蜜臂av| 麻豆成人久久精品二区三区小说| 国产女人aaa级久久久级| 中文字幕一区日韩精品欧美| 亚洲一级片在线观看| 九色综合国产一区二区三区| 99久久婷婷国产综合精品| 欧美欧美欧美欧美| ●精品国产综合乱码久久久久| 久久午夜电影网| 亚洲高清一区二区三区| 国产精品1区2区3区在线观看| 亚洲午夜精品网| 韩国在线一区二区| 91年精品国产| 久久九九99视频| 日韩精品电影在线观看| 成人高清av在线| 久久伊人蜜桃av一区二区| 亚洲与欧洲av电影| 成人网男人的天堂| 日韩欧美成人激情| 亚洲福利视频三区| 色综合久久久久久久久久久| 久久亚洲欧美国产精品乐播 | 久久国产三级精品| 欧美性大战久久| 国产午夜精品美女毛片视频| 亚洲超碰97人人做人人爱| 成人av在线电影| 久久婷婷色综合| 精彩视频一区二区三区| 欧美久久久久久久久| 亚洲激情中文1区| 97se亚洲国产综合自在线 | 午夜成人在线视频| 91成人网在线| 日本一区二区三区四区| 国产在线一区二区综合免费视频| 国产一区二区三区电影在线观看| 久久国内精品视频| 日韩视频在线永久播放| 亚洲成av人影院在线观看网| 在线视频国内自拍亚洲视频| 中文字幕欧美激情| 福利视频网站一区二区三区| 欧美精品一区男女天堂| 国产在线视视频有精品| 久久久一区二区| 成人一区二区视频| 国产精品欧美极品| 色婷婷久久一区二区三区麻豆| 欧美日韩中文国产| 天天做天天摸天天爽国产一区| 日本女人一区二区三区| 91精品国产美女浴室洗澡无遮挡| 日韩精品一区二| 九九在线精品视频| 国产日韩精品一区| 不卡av在线网| 亚洲国产精品久久艾草纯爱| 欧美日韩一区二区三区不卡| 亚洲高清视频中文字幕| 日韩精品中文字幕一区二区三区 | 日韩avvvv在线播放| 欧美麻豆精品久久久久久| 亚洲另类在线一区| 欧美性videosxxxxx| 日本vs亚洲vs韩国一区三区二区| 成人黄色免费短视频| 亚洲欧美韩国综合色| 91麻豆精品国产91久久久更新时间 | 欧美在线一二三| 日韩电影在线观看电影| 91精品国产综合久久久蜜臀粉嫩| 中文字幕一区免费在线观看| 94-欧美-setu| 午夜精品国产更新| 欧美成人猛片aaaaaaa| 成人免费视频视频在线观看免费| 欧美性色aⅴ视频一区日韩精品| 精品国产电影一区二区| 91香蕉视频黄| 日韩成人一区二区| 中文字幕不卡一区| 欧美军同video69gay| 国产大片一区二区| 亚洲电影中文字幕在线观看| 精品久久久久一区| 欧洲一区二区三区免费视频| 91蜜桃传媒精品久久久一区二区| 久久99精品国产麻豆婷婷洗澡| 成人一区二区在线观看| 亚瑟在线精品视频| 1区2区3区精品视频| 欧美精品色一区二区三区| 国产成人在线电影| 五月天丁香久久| 国产精品久久久久久久裸模| 8v天堂国产在线一区二区| 91在线精品一区二区三区| 紧缚奴在线一区二区三区| 五月婷婷欧美视频| 一区二区三区欧美亚洲| 亚洲国产高清不卡| 久久久久久久久免费| 欧美xxx久久| 精品剧情v国产在线观看在线| 视频一区中文字幕| 亚洲综合色视频| 日韩理论片在线| 亚洲欧洲韩国日本视频| 久久综合久久综合久久| 日韩欧美高清一区| 日韩一区二区在线观看视频播放| 亚洲h精品动漫在线观看| 国产精品国产三级国产aⅴ原创| 成人黄色电影在线 | 亚洲一区二区三区激情| 亚洲欧美自拍偷拍| 欧美国产日韩a欧美在线观看 | 自拍偷拍国产精品| 国产欧美一区二区三区鸳鸯浴| 国产一区二区在线影院| 日韩国产高清在线| 亚洲国产精品尤物yw在线观看| 欧美性xxxxxxxx| 欧美日韩久久一区二区| 91黄色免费网站| 99久久综合精品| 91视视频在线观看入口直接观看www | 国产精品久久久久久久岛一牛影视 | 香蕉久久一区二区不卡无毒影院 | 久久国产尿小便嘘嘘尿| 亚洲不卡在线观看| 蜜桃视频在线观看一区| 精品一区二区在线免费观看| 美国av一区二区| 久久精品国产一区二区| 极品少妇xxxx精品少妇| 国产精品一区一区| 91麻豆自制传媒国产之光| 欧亚洲嫩模精品一区三区| 欧美日韩aaaaa| 日韩精品一区二区在线| 久久久精品中文字幕麻豆发布| 91在线精品秘密一区二区| 色视频成人在线观看免| 欧美日韩在线播放三区| 欧美一级二级在线观看| 久久精品一区二区三区不卡| 久久午夜免费电影| 中文字幕一区在线观看| 午夜影视日本亚洲欧洲精品| 日韩电影在线一区二区三区| 国产一区二区在线视频| 色综合久久66| 欧美一区二区高清| 中文字幕 久热精品 视频在线 | 日韩欧美国产wwwww| 国产午夜精品一区二区三区视频 | 美女被吸乳得到大胸91| 国产成人av一区二区三区在线| 午夜a成v人精品| 成人a免费在线看| 777奇米四色成人影色区| 日本一区二区三区在线不卡| 亚洲伦理在线精品| 精品一区二区久久久| 色视频一区二区| 国产精品美女一区二区| 另类中文字幕网| 欧美日本一区二区在线观看|