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

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

?? 91x_gpio.c

?? 最新版FreeRTOS, 包擴多種開發平臺的移植
?? C
字號:
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
* File Name          : 91x_gpio.c
* Author             : MCD Application Team
* Date First Issued  : 05/18/2006 : Version 1.0
* Description        : This file provides all the GPIO software functions.
********************************************************************************
* History:
* 05/24/2006 : Version 1.1
* 05/18/2006 : Version 1.0
********************************************************************************
* THE PRESENT SOFTWARE 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 SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "91x_gpio.h"
#include "91x_scu.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
   static u8 GPIO_GetGPIONumber(GPIO_TypeDef* GPIOx);

/* Private functions ---------------------------------------------------------*/

/*******************************************************************************
* Function Name  : GPIO_DeInit
* Description    : Deinitializes the GPIOx peripheral registers to their default
*                  reset values.
* Input          : GPIOx: where x can be (0..9) to select the GPIO peripheral.
* Output         : None
* Return         : None
*******************************************************************************/
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{

  /* Reset the GPIO registers values */
  if(GPIOx == GPIO0)
  {
    SCU_APBPeriphReset(__GPIO0,ENABLE);
    SCU_APBPeriphReset(__GPIO0,DISABLE);
    SCU->GPIOTYPE[0x00] = 0x0000 ;
    SCU->GPIOOUT[0x00]  = 0x0000;
    SCU->GPIOIN[0x00]   = 0x0000;
  }

   if(GPIOx == GPIO1)
  {
    SCU_APBPeriphReset(__GPIO1,ENABLE);
    SCU_APBPeriphReset(__GPIO1,DISABLE);
    SCU->GPIOTYPE[0x01] = 0x0000 ;
    SCU->GPIOOUT[0x01]  = 0x0000;
    SCU->GPIOIN[0x01]   = 0x0000;
  }

   if(GPIOx == GPIO2)
  {
    SCU_APBPeriphReset(__GPIO2,ENABLE);
    SCU_APBPeriphReset(__GPIO2,DISABLE);
    SCU->GPIOTYPE[0x02] = 0x0000 ;
    SCU->GPIOOUT[0x02]  = 0x0000;
    SCU->GPIOIN[0x02]   = 0x0000;
  }

   if(GPIOx == GPIO3)
  {
    SCU_APBPeriphReset(__GPIO3,ENABLE);
    SCU_APBPeriphReset(__GPIO3,DISABLE);
    SCU->GPIOTYPE[0x03] = 0x0000 ;
    SCU->GPIOOUT[0x03]  = 0x0000;
    SCU->GPIOIN[0x03]   = 0x0000;
  }

   if(GPIOx == GPIO4)
  {
    SCU_APBPeriphReset(__GPIO4,ENABLE);
    SCU_APBPeriphReset(__GPIO4,DISABLE);
    SCU->GPIOTYPE[0x04] = 0x0000 ;
    SCU->GPIOOUT[0x04]  = 0x0000;
    SCU->GPIOIN[0x04]   = 0x0000;
    SCU->GPIOANA = 0x00;
  }

   if(GPIOx == GPIO5)
  {
    SCU_APBPeriphReset(__GPIO5,ENABLE);
    SCU_APBPeriphReset(__GPIO5,DISABLE);
    SCU->GPIOTYPE[0x05] = 0x0000 ;
    SCU->GPIOOUT[0x05]  = 0x0000;
    SCU->GPIOIN[0x05]   = 0x0000;
  }

   if(GPIOx == GPIO6)
  {
    SCU_APBPeriphReset(__GPIO6,ENABLE);
    SCU_APBPeriphReset(__GPIO6,DISABLE);
    SCU->GPIOTYPE[0x06] = 0x0000 ;
    SCU->GPIOOUT[0x06]  = 0x0000;
    SCU->GPIOIN[0x06]   = 0x0000;
  }

   if(GPIOx == GPIO7)
  {
    SCU_APBPeriphReset(__GPIO7,ENABLE);
    SCU_APBPeriphReset(__GPIO7,DISABLE);
    SCU->GPIOOUT[0x07]  = 0xAAAA;
    SCU->GPIOOUT[0x07]  = 0x0000;
    SCU->GPIOIN[0x07]   = 0x0000;
  }

   if(GPIOx == GPIO8)
  {
    SCU_APBPeriphReset(__GPIO8,ENABLE);
    SCU_APBPeriphReset(__GPIO8,DISABLE);
    SCU->GPIOEMI = 0x00;
  }

   if(GPIOx == GPIO9)
  {
    SCU_APBPeriphReset(__GPIO9,ENABLE);
    SCU_APBPeriphReset(__GPIO9,DISABLE);
    SCU->GPIOEMI = 0x00;
  }
}
/*******************************************************************************
* Function Name  : GPIO_Init
* Description    : Initializes the GPIOx peripheral according to the specified
*                  parameters in the GPIO_InitStruct .
* Input          :- GPIOx: where x can be (0..9) to select the GPIO peripheral.
*                 - GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that
*                   contains the configuration information for the specified GPIO
*                   peripheral.
* Output         : None
* Return         : None
*******************************************************************************/
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
{
  /* Select pin direction */
  u8 PinNumber = 0;
  u8 Counter = 0;
  u8 GPIO_Number = 0;

  GPIO_Number = GPIO_GetGPIONumber(GPIOx);


  if(GPIO_InitStruct->GPIO_Direction == GPIO_PinOutput)
  {
  GPIOx->DDR |= GPIO_InitStruct->GPIO_Pin;
  }
  else
  {
   GPIOx->DDR &= ~GPIO_InitStruct->GPIO_Pin;
  }

   for (Counter = 0; Counter < 8;Counter++)
    {
     /*Search pin number*/
     PinNumber = (GPIO_InitStruct->GPIO_Pin & (1 <<Counter));
     if((PinNumber >> Counter) == 1)
     {
        /*Output ALternate 0*/
        SCU->GPIOOUT[GPIO_Number] &= ~(0x3 <<(Counter *2));
        if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt1)
        {
          /*Output ALternate 1*/
          SCU->GPIOOUT[GPIO_Number] |= 1 << (Counter *2);
        }
        if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt2)
        {
          /*Output ALternate 2*/
          SCU->GPIOOUT[GPIO_Number] |= 0x2 << (Counter *2);
        }
        if(GPIO_InitStruct->GPIO_Alternate == GPIO_OutputAlt3)
        {
          /*Output ALternate 3*/
          SCU->GPIOOUT[GPIO_Number] |= 0x3 << (Counter *2);
        }

       /*Type configuration: PushPull or Open Collector*/
        SCU->GPIOTYPE[GPIO_Number] &= ~(0x1 << Counter) ;
       if(GPIO_InitStruct->GPIO_Type == GPIO_Type_OpenCollector)
       {
         /*Open Drain configuration*/
        SCU->GPIOTYPE[GPIO_Number] |= 0x1 << Counter;
       }

       /*IP Connected disable*/
       SCU->GPIOIN[GPIO_Number] &= ~(0x1 << Counter) ;
       if(GPIO_InitStruct->GPIO_IPConnected == GPIO_IPConnected_Enable)
       {
         /*IP Connected enable*/
         SCU->GPIOIN[GPIO_Number] |= 0x1 << Counter;
       }
    }
 }
}

/*******************************************************************************
* Function Name  : GPIO_StructInit
* Description    : Initialize the GPIO Init Structure parameters
* Input          : GPIO_InitStruct : pointer to a GPIO_InitTypeDef structure
*                  which will be initialized.
* Output         : None
* Return         : None
*******************************************************************************/
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
{
  /* Reset GPIO init structure parameters values */
  GPIO_InitStruct->GPIO_Pin  = GPIO_Pin_All;
  GPIO_InitStruct->GPIO_Direction = GPIO_PinInput;
  GPIO_InitStruct->GPIO_Type = GPIO_Type_PushPull;
  GPIO_InitStruct->GPIO_IPConnected = GPIO_IPConnected_Disable;
  GPIO_InitStruct->GPIO_Alternate = GPIO_InputAlt1;
}

/*******************************************************************************
* Function Name  : GPIO_ReadBit
* Description    : Reads the specified port pin
* Input          : - GPIOx: where x can be (0..9) to select the GPIO peripheral.
*                : - GPIO_Pin: the Pin number. This parameter can be GPIO_Pin_x
*                    where x can be (0..7).
* Output         : None
* Return         : The port pin value
*******************************************************************************/
u8 GPIO_ReadBit(GPIO_TypeDef* GPIOx, u8 GPIO_Pin)
{
 if ((((GPIOx->DR[GPIO_Pin<<2])) & GPIO_Pin) != Bit_RESET )
  {
    return Bit_SET;
  }
  else
  {
    return Bit_RESET;
  }
}

/*******************************************************************************
* Function Name  : GPIO_Read
* Description    : Reads the specified GPIO data port
* Input          : - GPIOx: where x can be (0..9) to select the GPIO peripheral.
* Output         : None
* Return         : GPIO data port word value.
*******************************************************************************/
u8 GPIO_Read(GPIO_TypeDef* GPIOx)
{
  return (GPIOx->DR[0x3FC]);
}

/*******************************************************************************
* Function Name  : GPIO_WriteBit
* Description    : Sets or clears the selected data port bit.
* Input          : - GPIOx: where x can be (0..9) to select the GPIO peripheral.
*                  - GPIO_Pin: the Pin number. This parameter can be GPIO_Pin_x
*                    where x can be (0..7).
*                  - BitVal: this parameter specifies the value to be written
*                    to the selected bit.
*                    BitVal must be one of the BitAction enum values:
*                       - Bit_RESET: to clear the port pin
*                       - Bit_SET: to set the port pin
* Output         : None
* Return         : None
*******************************************************************************/
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u8 GPIO_Pin, BitAction BitVal)
{
  if(BitVal == Bit_SET)
  {
    GPIOx->DR[GPIO_Pin <<2] = GPIO_Pin;
  }
  else
  {
    GPIOx->DR[GPIO_Pin <<2] = 0x00;
  }
}

/*******************************************************************************
* Function Name  : GPIO_Write
* Description    : Writes the passed value in the selected data GPIOx port
*                  register.
* Input          :- GPIOx: where x can be (0..9) to select the GPIO peripheral.
*                 - PortVal: the value to be written to the data port register.
* Output         : None
* Return         : None
*******************************************************************************/
void GPIO_Write(GPIO_TypeDef* GPIOx, u8 PortVal)
{
  GPIOx->DR[0x3FC] = PortVal;
}

/*******************************************************************************
* Function Name  : GPIO_EMIConfig
* Description    : Enables or disables GPIO 8 and 9 in EMI mode.
* Input          : - NewState: new state of the EMI.
*                   This parameter can be: ENABLE or DISABLE.
* Output         : None
* Return         : None
*******************************************************************************/
void GPIO_EMIConfig(FunctionalState NewState)
{
  if(NewState == ENABLE)
  {
    SCU->GPIOEMI = 0x01;
  }
  else
  {
    SCU->GPIOEMI = 0x00;
  }
}

/*******************************************************************************
* Function Name  : GPIO_ANAPinConfig
* Description    : Enables or disables pins from GPIO 4 in Analogue mode.
* Input          :- GPIO_ANAChannel: selects the ADC channel pin.
*                   This parameter can be one of the following values:
*                      GPIO_ANAChannel0
*                      GPIO_ANAChannel1
*                      GPIO_ANAChannel2
*                      GPIO_ANAChannel3
*                      GPIO_ANAChannel4
*                      GPIO_ANAChannel5
*                      GPIO_ANAChannel6
*                      GPIO_ANAChannel7
*                      GPIO_ANAChannelALL
*                 - NewState: new state of the port pin.
*                   This parameter can be: ENABLE or DISABLE.
* Output         : None
* Return         : None
*******************************************************************************/
void GPIO_ANAPinConfig(u8 GPIO_ANAChannel, FunctionalState NewState)
{

  if(NewState == ENABLE)
  {
    if(GPIO_ANAChannel == GPIO_ANAChannelALL)
    {
      SCU->GPIOOUT[4] = 0x0000;
      SCU->GPIOIN[4] = 0x00;
    }
    else
    {
      SCU->GPIOOUT[4] &= ~(0x3<<(GPIO_ANAChannel-1));
      SCU->GPIOIN[4] &= ~GPIO_ANAChannel;
    }
    SCU->GPIOANA |= GPIO_ANAChannel;

  }
  else
  {
    SCU->GPIOANA &= ~GPIO_ANAChannel;
  }
}

/*******************************************************************************
* Function Name  : GPIO_GetGPIONumber
* Description    : searche the GPIO number.
* Input          : GPIOx: where x can be (0..9) to select the GPIO peripheral.
* Output         : None
* Return         : GPIO number
*******************************************************************************/
u8 GPIO_GetGPIONumber(GPIO_TypeDef* GPIOx)
{
 
  if(GPIOx == GPIO1)
  {
    return  1;
  }
  if(GPIOx == GPIO2)
  {
    return  2;
  }
  if(GPIOx == GPIO3)
  {
    return  3;
  }
  if(GPIOx == GPIO4)
  {
    return  4;
  }
  if(GPIOx == GPIO5)
  {
    return  5;
  }
  if(GPIOx == GPIO6)
  {
    return  6;
  }
  if(GPIOx == GPIO7)
  {
    return  7;
  }
  if(GPIOx == GPIO8)
  {
    return  8;
  }
  if(GPIOx == GPIO9)
  {
    return  9;
  }
  return 0;
}
/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲一区三区| 中文字幕欧美激情一区| 久久先锋影音av| 亚洲综合小说图片| 国产成人亚洲精品狼色在线| 欧美日韩成人一区| 亚洲日本中文字幕区| 精品中文字幕一区二区| 色综合夜色一区| 中文字幕第一区二区| 免费在线视频一区| 欧美亚洲国产一卡| 国产精品人妖ts系列视频| 美女视频一区在线观看| 欧美日韩在线电影| 综合色中文字幕| 豆国产96在线|亚洲| 欧美精品一区二区精品网| 亚洲午夜精品久久久久久久久| 成人av电影免费在线播放| 国产日韩欧美一区二区三区乱码 | 69堂精品视频| 亚洲精品国产一区二区三区四区在线| 国内不卡的二区三区中文字幕| 91麻豆精品国产91久久久更新时间| 亚洲欧美韩国综合色| 色综合久久久久网| 亚洲欧洲国产日韩| 成人黄色在线网站| 欧美激情在线一区二区| 国产成a人亚洲| 国产亚洲欧美在线| 大陆成人av片| 国产精品色婷婷久久58| 99国产精品久久久久| 亚洲色图制服诱惑| 99re66热这里只有精品3直播 | 一本色道久久加勒比精品| 国产精品污污网站在线观看| 成av人片一区二区| 中文字幕在线视频一区| 一本在线高清不卡dvd| 奇米影视在线99精品| 制服丝袜成人动漫| 久久66热re国产| 久久嫩草精品久久久精品一| 成人自拍视频在线| 亚洲欧美一区二区三区极速播放 | 亚洲综合网站在线观看| 欧美日韩专区在线| 男人的j进女人的j一区| 久久综合九色综合97婷婷女人| 国产一区二区三区观看| 国产精品欧美综合在线| 一本色道久久综合亚洲精品按摩| 午夜精品视频一区| 久久综合色播五月| av中文字幕一区| 同产精品九九九| 久久久亚洲欧洲日产国码αv| 国产成人午夜99999| 亚洲激情图片小说视频| 欧美一区二区久久| 成人黄色电影在线| 日韩激情视频在线观看| 国产亚洲精品资源在线26u| 色成年激情久久综合| 美女视频黄久久| 免费在线看一区| 国产精品久久一卡二卡| 欧美日韩久久久久久| 国产91精品免费| 午夜精品视频一区| 亚洲欧洲99久久| 日韩欧美黄色影院| 91久久精品网| 国产1区2区3区精品美女| 午夜亚洲福利老司机| 欧美国产精品一区| 欧美日韩一级视频| 97久久超碰精品国产| 激情偷乱视频一区二区三区| 亚洲国产精品视频| 国产精品精品国产色婷婷| 日韩久久免费av| 91福利在线免费观看| 国产福利电影一区二区三区| 日韩av电影天堂| 亚洲精品乱码久久久久久| 国产欧美一区二区三区网站| 91精品久久久久久蜜臀| 色婷婷av一区二区三区之一色屋| 国产美女娇喘av呻吟久久| 三级一区在线视频先锋| 亚洲影视在线播放| 亚洲精品高清视频在线观看| 国产人成一区二区三区影院| 日韩欧美久久久| 91精品国产综合久久国产大片| 91久久精品一区二区二区| 99久久99久久免费精品蜜臀| 国产精品一区二区免费不卡 | 亚洲午夜一二三区视频| 国产精品热久久久久夜色精品三区| 欧美一级片在线| 在线播放亚洲一区| 欧美影院午夜播放| 在线视频观看一区| 91香蕉视频污| 91美女福利视频| 色婷婷综合久久久| 91香蕉视频黄| 欧美在线free| 欧美日韩日日夜夜| 在线综合视频播放| 91麻豆精品国产91久久久资源速度| 欧美高清激情brazzers| 欧美日韩国产精品自在自线| 在线成人免费观看| 日韩一区二区免费在线电影| 欧美一卡二卡在线观看| 欧美一区二区三级| 欧美一二三区在线观看| 欧美一区二区性放荡片| 精品精品国产高清a毛片牛牛| 欧美videossexotv100| 精品国产在天天线2019| 国产欧美日韩麻豆91| 亚洲女人****多毛耸耸8| 曰韩精品一区二区| 日本三级亚洲精品| 国产大陆精品国产| 成人黄色777网| 欧美色视频在线观看| 日韩视频在线永久播放| 国产欧美综合在线| 一区二区三区四区不卡在线| 视频一区二区中文字幕| 国产伦精品一区二区三区免费| 国产成人一区在线| 色www精品视频在线观看| 欧美精品1区2区| 久久久久成人黄色影片| 一区二区成人在线| 青青草原综合久久大伊人精品| 国产精品主播直播| 欧美婷婷六月丁香综合色| 日韩精品一区二区三区四区视频| 国产精品美女www爽爽爽| 亚洲国产毛片aaaaa无费看| 国产乱子伦视频一区二区三区| 色综合欧美在线| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲色图制服丝袜| 激情综合五月婷婷| 不卡一二三区首页| 欧美成人女星排行榜| 亚洲色图另类专区| 免费亚洲电影在线| 日本伦理一区二区| 久久免费看少妇高潮| 视频在线在亚洲| 99久久99精品久久久久久 | 久久99国产精品免费网站| 国产91综合网| 日韩精品一区国产麻豆| 一区二区三区av电影 | 国内偷窥港台综合视频在线播放| 99精品一区二区| 久久综合国产精品| 午夜成人在线视频| 色婷婷久久久久swag精品| 国产日韩欧美麻豆| 精品在线免费视频| 欧美日韩一区三区| 亚洲欧美国产77777| 成人性色生活片| 久久青草欧美一区二区三区| 人禽交欧美网站| 欧美情侣在线播放| 依依成人精品视频| 成人av电影在线| 国产精品女主播av| 国产98色在线|日韩| 2021中文字幕一区亚洲| 日韩av网站在线观看| 欧美日韩的一区二区| 亚洲午夜视频在线观看| 色吊一区二区三区| 亚洲精品一二三四区| 91啪亚洲精品| 中文字幕字幕中文在线中不卡视频| 国产一区二区三区四区五区入口| 日韩三级视频在线观看| 日本成人在线电影网| 这里只有精品免费| 天天爽夜夜爽夜夜爽精品视频| 欧美日韩在线综合| 亚洲成人三级小说| 欧美一区二区三区视频在线|