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

📄 stm32f10x_gpio.i

📁 STM32+ov7670
💻 I
📖 第 1 页 / 共 2 页
字号:





































































































































#line 924 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_map.h"














 
#line 1180 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_map.h"

 
 
 



 
#line 23 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_gpio.h"

 
#line 32 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_gpio.h"
                                     
 
typedef enum
{ 
  GPIO_Speed_10MHz = 1,
  GPIO_Speed_2MHz, 
  GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;



                                         
 
typedef enum
{ GPIO_Mode_AIN = 0x0,
  GPIO_Mode_IN_FLOATING = 0x04,
  GPIO_Mode_IPD = 0x28,
  GPIO_Mode_IPU = 0x48,
  GPIO_Mode_Out_OD = 0x14,
  GPIO_Mode_Out_PP = 0x10,
  GPIO_Mode_AF_OD = 0x1C,
  GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;





                              
 
typedef struct
{
  u16 GPIO_Pin;
  GPIOSpeed_TypeDef GPIO_Speed;
  GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;

 
typedef enum
{ Bit_RESET = 0,
  Bit_SET
}BitAction;


 
 
#line 95 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_gpio.h"



#line 114 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_gpio.h"
                            
 
#line 141 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_gpio.h"


#line 156 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_gpio.h"
                              
 
#line 165 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_gpio.h"






                                         
#line 179 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_gpio.h"
                                       
 
#line 197 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_gpio.h"

#line 214 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_gpio.h"
                          
 
 
void GPIO_DeInit(GPIO_TypeDef* GPIOx);
void GPIO_AFIODeInit(void);
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
u16 GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
u16 GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal);
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, u16 GPIO_Pin);
void GPIO_EventOutputConfig(u8 GPIO_PortSource, u8 GPIO_PinSource);
void GPIO_EventOutputCmd(FunctionalState NewState);
void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState);
void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource);



 
#line 18 "HARDWARE\\stm32f10x_gpio.c"
#line 1 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"














 

 



 
#line 23 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"

 
typedef struct
{
  u32 SYSCLK_Frequency;
  u32 HCLK_Frequency;
  u32 PCLK1_Frequency;
  u32 PCLK2_Frequency;
  u32 ADCCLK_Frequency;
}RCC_ClocksTypeDef;

 
 







 








 
#line 68 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"

#line 77 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"

 








 
#line 97 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"







 










 
#line 122 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"







 






 








 







 








 
#line 170 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"



 
#line 190 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"



 
#line 215 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"



 










 
#line 241 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"

#line 248 "C:\\Keil\\ARM\\INC\\ST\\STM32F10x\\stm32f10x_rcc.h"



 
 
void RCC_DeInit(void);
void RCC_HSEConfig(u32 RCC_HSE);
ErrorStatus RCC_WaitForHSEStartUp(void);
void RCC_AdjustHSICalibrationValue(u8 HSICalibrationValue);
void RCC_HSICmd(FunctionalState NewState);
void RCC_PLLConfig(u32 RCC_PLLSource, u32 RCC_PLLMul);
void RCC_PLLCmd(FunctionalState NewState);
void RCC_SYSCLKConfig(u32 RCC_SYSCLKSource);
u8 RCC_GetSYSCLKSource(void);
void RCC_HCLKConfig(u32 RCC_SYSCLK);
void RCC_PCLK1Config(u32 RCC_HCLK);
void RCC_PCLK2Config(u32 RCC_HCLK);
void RCC_ITConfig(u8 RCC_IT, FunctionalState NewState);
void RCC_USBCLKConfig(u32 RCC_USBCLKSource);
void RCC_ADCCLKConfig(u32 RCC_PCLK2);
void RCC_LSEConfig(u8 RCC_LSE);
void RCC_LSICmd(FunctionalState NewState);
void RCC_RTCCLKConfig(u32 RCC_RTCCLKSource);
void RCC_RTCCLKCmd(FunctionalState NewState);
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks);
void RCC_AHBPeriphClockCmd(u32 RCC_AHBPeriph, FunctionalState NewState);
void RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph, FunctionalState NewState);
void RCC_APB1PeriphClockCmd(u32 RCC_APB1Periph, FunctionalState NewState);
void RCC_APB2PeriphResetCmd(u32 RCC_APB2Periph, FunctionalState NewState);
void RCC_APB1PeriphResetCmd(u32 RCC_APB1Periph, FunctionalState NewState);
void RCC_BackupResetCmd(FunctionalState NewState);
void RCC_ClockSecuritySystemCmd(FunctionalState NewState);
void RCC_MCOConfig(u8 RCC_MCO);
FlagStatus RCC_GetFlagStatus(u8 RCC_FLAG);
void RCC_ClearFlag(void);
ITStatus RCC_GetITStatus(u8 RCC_IT);
void RCC_ClearITPendingBit(u8 RCC_IT);



 
#line 19 "HARDWARE\\stm32f10x_gpio.c"

 
 
 


 
 




#line 37 "HARDWARE\\stm32f10x_gpio.c"

 
 
 
 








 
void GPIO_DeInit(GPIO_TypeDef* GPIOx)
{
   
  ((void)0);
  
  switch (*(u32*)&GPIOx)
  {
    case ((((u32)0x40000000) + 0x10000) + 0x0800):
      RCC_APB2PeriphResetCmd(((u32)0x00000004), ENABLE);
      RCC_APB2PeriphResetCmd(((u32)0x00000004), DISABLE);
      break;

    case ((((u32)0x40000000) + 0x10000) + 0x0C00):
      RCC_APB2PeriphResetCmd(((u32)0x00000008), ENABLE);
      RCC_APB2PeriphResetCmd(((u32)0x00000008), DISABLE);
      break;

    case ((((u32)0x40000000) + 0x10000) + 0x1000):
      RCC_APB2PeriphResetCmd(((u32)0x00000010), ENABLE);
      RCC_APB2PeriphResetCmd(((u32)0x00000010), DISABLE);
      break;

    case ((((u32)0x40000000) + 0x10000) + 0x1400):
      RCC_APB2PeriphResetCmd(((u32)0x00000020), ENABLE);
      RCC_APB2PeriphResetCmd(((u32)0x00000020), DISABLE);
      break;
      
    case ((((u32)0x40000000) + 0x10000) + 0x1800):
      RCC_APB2PeriphResetCmd(((u32)0x00000040), ENABLE);
      RCC_APB2PeriphResetCmd(((u32)0x00000040), DISABLE);
      break; 

    case ((((u32)0x40000000) + 0x10000) + 0x1C00):
      RCC_APB2PeriphResetCmd(((u32)0x00000080), ENABLE);
      RCC_APB2PeriphResetCmd(((u32)0x00000080), DISABLE);
      break;

    case ((((u32)0x40000000) + 0x10000) + 0x2000):
      RCC_APB2PeriphResetCmd(((u32)0x00000100), ENABLE);
      RCC_APB2PeriphResetCmd(((u32)0x00000100), DISABLE);
      break;                       

    default:
      break;
  }
}









 
void GPIO_AFIODeInit(void)
{
  RCC_APB2PeriphResetCmd(((u32)0x00000001), ENABLE);
  RCC_APB2PeriphResetCmd(((u32)0x00000001), DISABLE);
}











 
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
{
  u32 currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00;
  u32 tmpreg = 0x00, pinmask = 0x00;

   
  ((void)0);
  ((void)0);
  ((void)0);  
  
 
  currentmode = ((u32)GPIO_InitStruct->GPIO_Mode) & ((u32)0x0F);

  if ((((u32)GPIO_InitStruct->GPIO_Mode) & ((u32)0x10)) != 0x00)
  { 
     
    ((void)0);
     
    currentmode |= (u32)GPIO_InitStruct->GPIO_Speed;
  }

 
   
  if (((u32)GPIO_InitStruct->GPIO_Pin & ((u32)0x00FF)) != 0x00)
  {
    tmpreg = GPIOx->CRL;

    for (pinpos = 0x00; pinpos < 0x08; pinpos++)
    {
      pos = ((u32)0x01) << pinpos;
       
      currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;

      if (currentpin == pos)
      {
        pos = pinpos << 2;
         
        pinmask = ((u32)0x0F) << pos;
        tmpreg &= ~pinmask;

         
        tmpreg |= (currentmode << pos);

         
        if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
        {
          GPIOx->BRR = (((u32)0x01) << pinpos);
        }
        else
        {
           
          if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
          {
            GPIOx->BSRR = (((u32)0x01) << pinpos);
          }
        }
      }
    }
    GPIOx->CRL = tmpreg;
  }

 
   
  if (GPIO_InitStruct->GPIO_Pin > 0x00FF)
  {
    tmpreg = GPIOx->CRH;
    for (pinpos = 0x00; pinpos < 0x08; pinpos++)
    {
      pos = (((u32)0x01) << (pinpos + 0x08));
       
      currentpin = ((GPIO_InitStruct->GPIO_Pin) & pos);
      if (currentpin == pos)
      {
        pos = pinpos << 2;
         
        pinmask = ((u32)0x0F) << pos;
        tmpreg &= ~pinmask;

         
        tmpreg |= (currentmode << pos);

         
        if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
        {
          GPIOx->BRR = (((u32)0x01) << (pinpos + 0x08));
        }
         
        if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
        {
          GPIOx->BSRR = (((u32)0x01) << (pinpos + 0x08));
        }
      }
    }
    GPIOx->CRH = tmpreg;
  }
}








 
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)
{
   
  GPIO_InitStruct->GPIO_Pin  = ((u16)0xFFFF);
  GPIO_InitStruct->GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStruct->GPIO_Mode = GPIO_Mode_IN_FLOATING;
}









 
u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
{
  u8 bitstatus = 0x00;
  
   
  ((void)0);
  ((void)0); 
  
  if ((GPIOx->IDR & GPIO_Pin) != (u32)Bit_RESET)
  {
    bitstatus = (u8)Bit_SET;
  }
  else
  {
    bitstatus = (u8)Bit_RESET;
  }
  return bitstatus;
}







 
u16 GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
{
   
  ((void)0);
  
  return ((u16)GPIOx->IDR);
}









 
u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
{
  u8 bitstatus = 0x00;

   
  ((void)0);
  ((void)0); 
  
  if ((GPIOx->ODR & GPIO_Pin) != (u32)Bit_RESET)
  {
    bitstatus = (u8)Bit_SET;
  }
  else
  {
    bitstatus = (u8)Bit_RESET;
  }
  return bitstatus;
}







 
u16 GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
{
   
  ((void)0);
    
  return ((u16)GPIOx->ODR);
}










 
void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
{
   
  ((void)0);
  ((void)0);
  
  GPIOx->BSRR = GPIO_Pin;
}










 
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
{
   
  ((void)0);
  ((void)0);
  
  GPIOx->BRR = GPIO_Pin;
}













 
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin, BitAction BitVal)
{
   
  ((void)0);
  ((void)0);
  ((void)0); 
  
  if (BitVal != Bit_RESET)
  {
    GPIOx->BSRR = GPIO_Pin;
  }
  else
  {
    GPIOx->BRR = GPIO_Pin;
  }
}









 
void GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal)
{
   
  ((void)0);
  
  GPIOx->ODR = PortVal;
}










 
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
{
  u32 tmp = 0x00010000;
  
   
  ((void)0);
  ((void)0);
  
  tmp |= GPIO_Pin;
   
  GPIOx->LCKR = tmp;
   
  GPIOx->LCKR =  GPIO_Pin;
   
  GPIOx->LCKR = tmp;
   
  tmp = GPIOx->LCKR;
   
  tmp = GPIOx->LCKR;
}












 
void GPIO_EventOutputConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
{
  u32 tmpreg = 0x00;

   
  ((void)0);
  ((void)0);
    
  tmpreg = ((AFIO_TypeDef *) ((((u32)0x40000000) + 0x10000) + 0x0000))->EVCR;
   
  tmpreg &= ((u16)0xFF80);
  tmpreg |= (u32)GPIO_PortSource << 0x04;
  tmpreg |= GPIO_PinSource;

  ((AFIO_TypeDef *) ((((u32)0x40000000) + 0x10000) + 0x0000))->EVCR = tmpreg;
}








 
void GPIO_EventOutputCmd(FunctionalState NewState)
{
   
  ((void)0);
  
  *(vu32 *) (((u32)0x42000000) + (((((((u32)0x40000000) + 0x10000) + 0x0000) - ((u32)0x40000000)) + 0x00) * 32) + (((u8)0x07) * 4)) = (u32)NewState;
}



































 
void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
{
  u32 tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00;

   
  ((void)0);
  ((void)0);  
  
  tmpreg = ((AFIO_TypeDef *) ((((u32)0x40000000) + 0x10000) + 0x0000))->MAPR;

  tmpmask = (GPIO_Remap & ((u32)0x000F0000)) >> 0x10;
  tmp = GPIO_Remap & ((u16)0xFFFF);

  if ((GPIO_Remap & (((u32)0x00200000) | ((u32)0x00100000))) == (((u32)0x00200000) | ((u32)0x00100000)))
  {
    tmpreg &= ((u32)0xF0FFFFFF);
    ((AFIO_TypeDef *) ((((u32)0x40000000) + 0x10000) + 0x0000))->MAPR &= ((u32)0xF0FFFFFF);
  }
  else if ((GPIO_Remap & ((u32)0x00100000)) == ((u32)0x00100000))
  {
    tmp1 = ((u32)0x03) << tmpmask;
    tmpreg &= ~tmp1;
    tmpreg |= ~((u32)0xF0FFFFFF);
  }
  else
  {
    tmpreg &= ~(tmp << ((GPIO_Remap >> 0x15)*0x10));
    tmpreg |= ~((u32)0xF0FFFFFF);
  }

  if (NewState != DISABLE)
  {
    tmpreg |= (tmp << ((GPIO_Remap >> 0x15)*0x10));
  }

  ((AFIO_TypeDef *) ((((u32)0x40000000) + 0x10000) + 0x0000))->MAPR = tmpreg;
}












 
void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
{
  u32 tmp = 0x00;

   
  ((void)0);
  ((void)0);
  
  tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));

  ((AFIO_TypeDef *) ((((u32)0x40000000) + 0x10000) + 0x0000))->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;
  ((AFIO_TypeDef *) ((((u32)0x40000000) + 0x10000) + 0x0000))->EXTICR[GPIO_PinSource >> 0x02] |= (((u32)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (u8)0x03)));
}

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -