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

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

?? stm32f10x_gpio.c

?? 中文固件庫.rar
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**
  ******************************************************************************
  * @文件    stm32f10x_gpio.c
  * @作者    MCD 應用程序組
  * @版本    V3.1.0
  * @日期    06/19/2009
  * @簡述    這個文件 提供所有 GPIO 固件函數.
  * @翻譯    ANSON/sweet1985 Email:airanson110@126.com
  * @日期    02/07/2009
  ******************************************************************************
  * @復件
  *
  * 這個固件僅僅是提供給客戶作為設計產品而編寫程序的參考目的使客戶節約時間。由于
  * 客戶使用本固件在開發產品編程上產生的結果意法半導體公司不承擔任何直接的和間接
  * 的責任,也不承擔任何損害而引起的賠償。
  *
  * <h2><center>&復制; 版權所有 2009 意法半導體公司</center></h2>
  * 翻譯版本僅供學習,如與英文原版有出入應以英文原版為準。
  */ 

/* 包含 ------------------------------------------------------------------*/
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

/* 自用類型 -----------------------------------------------------------*/
/* 自用定義 ------------------------------------------------------------*/

/* ------------ 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      ((u8)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)

/* 自用宏 -------------------------------------------------------------*/
/* 自用變量 ---------------------------------------------------------*/
/* 自用函數原型 -----------------------------------------------*/
/* 自用函數 ---------------------------------------------------------*/

/**
  * @簡述   將GPIO部件的寄存器復位為默認值
  * @參數   GPIOx:x可為A到G來選擇特定的GPIO設備
  * @返回   沒有
  */
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
  /* 檢查核對參數*/
  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);
    }
  }
}

/**
  * @簡述  將備用功能(重映射,事件控制及EXTI配置)寄存器復位為默認值
  * @參數  沒有
  * @返回  沒有
  */
void GPIO_AFIODeInit(void)
{
  RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, ENABLE);
  RCC_APB2PeriphResetCmd(RCC_APB2Periph_AFIO, DISABLE);
}

/**
  * @簡述  按照GPIO_InitStruct(結構體)的特定參數初始化GPIO部件
  * @參數  GPIOx:x可為A到G來選擇特定的GPIO設備,
  *        GPIO_InitStruct: 指向GPIO_InitTypeDef結構的指針,它包含特定GPIO部件的配置信息.
  * @返回  沒有
  */
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;
  /* 檢查參數 */
  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 模式配置 --------------------------------*/
  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(端口控制寄存器低字節) 配置 -------------------*/
  /* 配置低8位端口管腳 */
  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;
      /* 取得端口引腳的位置 */
      currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;
      if (currentpin == pos)
      {
        pos = pinpos << 2;
        /* 清空相應的低位控制寄存器 */
        pinmask = ((uint32_t)0x0F) << pos;
        tmpreg &= ~pinmask;
        /* 寫相應的模式配置位 */
        tmpreg |= (currentmode << pos);
        /* 復位相應的輸出數據寄存器 (ODR) 位 */
        if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
        {
          GPIOx->BRR = (((uint32_t)0x01) << pinpos);
        }
        else
        {
          /* 置位相應的輸出數據寄存器 (ODR) 位 */
          if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
          {
            GPIOx->BSRR = (((uint32_t)0x01) << pinpos);
          }
        }
      }
    }
    GPIOx->CRL = tmpreg;
  }
/*-------------------- GPIO CRH(端口控制寄存器高字節) 配置 -------------------*/
  /* 配置高8位端口引腳 */
  if (GPIO_InitStruct->GPIO_Pin > 0x00FF)
  {
    tmpreg = GPIOx->CRH;
    for (pinpos = 0x00; pinpos < 0x08; pinpos++)
    {
      pos = (((uint32_t)0x01) << (pinpos + 0x08));
      /* 取得端口引腳的位置 */
      currentpin = ((GPIO_InitStruct->GPIO_Pin) & pos);
      if (currentpin == pos)
      {
        pos = pinpos << 2;
        /* 清空相應的低位控制寄存器 */
        pinmask = ((uint32_t)0x0F) << pos;
        tmpreg &= ~pinmask;
        /* 寫相應的模式配置位 */
        tmpreg |= (currentmode << pos);
        /* 復位相應的輸出數據寄存器 (ODR) 位 */
        if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
        {
          GPIOx->BRR = (((uint32_t)0x01) << (pinpos + 0x08));
        }
        /* 置位相應的輸出數據寄存器 (ODR) 位 */
        if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
        {
          GPIOx->BSRR = (((uint32_t)0x01) << (pinpos + 0x08));
        }
      }
    }
    GPIOx->CRH = tmpreg;
  }
}

/**
  * @簡述  把GPIO_InitStruct中的每一個參數按缺省值填入.
  * @參數  GPIO_InitStruct : 指向GPIO_InitTypeDef結構,該結構將被初始化
  * @返回  沒有
  */
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
{
  /* 復位GPIO初始化結構參數值 */
  GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
  GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
}

/**
  * @簡述  讀取指定端口管腳的輸入.
  * @參數  GPIOx: x可為A到G來選擇特定的GPIO設備.
  *        GPIO_Pin:  被讀取的引腳位.
  *                   這個參數GPIO_Pin_x可以選擇0至15.
  * @返回  指定端口管腳的輸入值.
  */
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  uint8_t bitstatus = 0x00;
  
  /* 檢查參數 */
  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;
}

/**
  * @簡述  從特定的GPIO輸入數據端口讀取.
  * @參數  GPIOx: x可為A到G來選擇特定的GPIO設備.
  * @返回  指定的 GPIO 端口管腳的輸入值.
  */
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
{
  /* 檢查參數 */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  
  return ((uint16_t)GPIOx->IDR);
}

/**
  * @簡述  讀取指定端口管腳的輸出(位).
  * @參數  GPIOx: x可為A到G來選擇特定的GPIO設備.
  *        GPIO_Pin: 需要讀取的端口位.
  *                  這個參數GPIO_Pin_x可以選擇0至15.
  * @返回  輸出端口的輸出值.
  */
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  uint8_t bitstatus = 0x00;
  /* 檢查參數 */
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); 
  
  if ((GPIOx->ODR & GPIO_Pin) != (uint32_t)Bit_RESET)
  {
    bitstatus = (uint8_t)Bit_SET;
  }
  else
  {
    bitstatus = (uint8_t)Bit_RESET;
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产伦精品一区二区三区免费| 亚洲欧美日韩国产手机在线| 蜜臀av一级做a爰片久久| 欧美日韩免费观看一区二区三区| 亚洲精品国产精华液| 欧美在线视频不卡| 视频一区中文字幕国产| 日韩色在线观看| 国产一区二区三区久久久| 日本一区二区三区在线观看| eeuss鲁一区二区三区| 一区二区三区在线免费播放| 欧美蜜桃一区二区三区| 久久国产剧场电影| 中文字幕一区二区5566日韩| 色婷婷久久久久swag精品| 午夜精品福利一区二区三区av | 国产三级一区二区| 不卡影院免费观看| 五月综合激情网| 久久综合九色综合欧美亚洲| av在线免费不卡| 午夜精品免费在线| 国产午夜一区二区三区| 在线观看亚洲精品| 国产综合色在线| 亚洲精品精品亚洲| 日韩你懂的在线播放| 波多野结衣欧美| 免费日本视频一区| 中文字幕在线观看一区| 欧美精品1区2区3区| 国产精品一线二线三线精华| 一区二区三区精品| 久久精品夜色噜噜亚洲a∨| 欧美亚洲免费在线一区| 国产成人亚洲综合a∨婷婷 | 北条麻妃一区二区三区| 天天亚洲美女在线视频| 国产精品久久久久影院亚瑟| 制服丝袜日韩国产| 91影院在线观看| 国产专区欧美精品| 亚洲午夜一区二区| 亚洲欧洲日本在线| 日韩精品一区二区三区三区免费| 一本一道久久a久久精品 | 成人一级黄色片| 日本欧美久久久久免费播放网| 中文字幕一区二区三区蜜月| 久久综合999| 欧美日韩1区2区| 91麻豆免费看片| 国产成人在线视频网址| 美女一区二区三区| 亚洲va欧美va人人爽午夜| 1024精品合集| 国产精品乱子久久久久| 2020国产精品自拍| 日韩精品中文字幕一区二区三区| 欧美中文字幕一区二区三区亚洲| 成人免费的视频| 国产精品亚洲а∨天堂免在线| 琪琪久久久久日韩精品| 亚洲一级二级三级在线免费观看| 国产精品传媒入口麻豆| 久久久久久久精| 2014亚洲片线观看视频免费| 欧美一级国产精品| 欧美一区二区三区免费视频| 欧美三级欧美一级| 91成人国产精品| 色94色欧美sute亚洲线路一久| 91亚洲男人天堂| 不卡的电影网站| 成人av在线一区二区三区| 成人综合在线观看| 成人激情校园春色| 欧美夫妻性生活| 欧美在线免费播放| 在线观看国产日韩| 欧美视频一区二| 欧美日韩黄色一区二区| 欧美日本一区二区在线观看| 欧美美女激情18p| 欧美一区二区成人6969| 日韩欧美区一区二| 久久夜色精品国产欧美乱极品| 久久人人超碰精品| 国产精品入口麻豆九色| 中文字幕一区二区三区不卡在线| 亚洲精品亚洲人成人网| 亚洲图片欧美色图| 日韩av一区二区三区四区| 麻豆国产精品777777在线| 国产美女视频91| 97成人超碰视| 欧美另类videos死尸| 精品欧美一区二区久久| 日本一区二区三区国色天香 | 国产精品国产三级国产aⅴ原创 | 久久久影视传媒| 久久久精品免费免费| 欧美激情艳妇裸体舞| 亚洲少妇屁股交4| 首页国产丝袜综合| 国产精品99久久久久| 色综合中文综合网| 久久久久高清精品| 亚洲摸摸操操av| 日本欧美一区二区三区乱码| 国产精品一区2区| 色哟哟欧美精品| 日韩三级精品电影久久久 | 亚洲欧洲成人自拍| 偷偷要91色婷婷| 国产成人免费视频网站高清观看视频| 91精品久久久久久久91蜜桃| 久久久www成人免费毛片麻豆 | 91原创在线视频| 日韩你懂的在线播放| 国产精品久久久99| 奇米精品一区二区三区在线观看| 高清日韩电视剧大全免费| 欧美日精品一区视频| 国产日韩欧美精品在线| 亚洲成在人线在线播放| 国产盗摄一区二区| 91精品午夜视频| 1024成人网色www| 精彩视频一区二区三区| 色婷婷国产精品| 国产午夜精品久久久久久免费视 | 国产亚洲欧美激情| 日韩激情在线观看| 91丨porny丨最新| 久久久久久久久久久久久夜| 日日夜夜一区二区| 91亚洲精品一区二区乱码| 337p粉嫩大胆色噜噜噜噜亚洲| 一区二区三区在线观看国产| 国产成a人亚洲| 日韩免费看网站| 亚洲午夜精品在线| 成人app下载| 国产三级一区二区| 精品影视av免费| 欧美夫妻性生活| 亚洲高清免费观看高清完整版在线观看| 岛国一区二区三区| 精品福利一区二区三区| 免费人成黄页网站在线一区二区| 欧美综合在线视频| 亚洲免费在线视频一区 二区| 国产91丝袜在线播放| 久久综合色婷婷| 久久成人综合网| 91精品国产乱码| 天堂久久久久va久久久久| 欧美在线色视频| 亚洲乱码国产乱码精品精的特点 | 91小视频免费观看| 国产精品无码永久免费888| 极品瑜伽女神91| 日韩三级视频在线看| 毛片不卡一区二区| 日韩免费高清视频| 国产一区二区三区不卡在线观看| 欧美白人最猛性xxxxx69交| 青椒成人免费视频| 日韩视频在线一区二区| 免费在线观看日韩欧美| 日韩欧美视频在线| 久久 天天综合| 久久午夜免费电影| 国产丶欧美丶日本不卡视频| 欧美国产成人精品| 不卡av电影在线播放| 亚洲免费在线观看视频| 欧美丝袜丝交足nylons图片| 亚洲一区二区四区蜜桃| 911精品产国品一二三产区| 91在线视频18| 亚洲免费观看高清完整| 精品视频在线看| 久久精品国产一区二区| 久久综合久久99| 91一区二区在线| 亚洲成人av福利| 日韩精品一区二区三区中文精品 | 日韩av一区二区三区四区| 精品奇米国产一区二区三区| 国产精品中文字幕一区二区三区| 亚洲国产精品ⅴa在线观看| 91在线无精精品入口| 丝袜亚洲另类丝袜在线| 久久综合国产精品| 色成年激情久久综合| 免费久久99精品国产| 中文天堂在线一区|