📄 stm32f10x_gpio.i
字号:
#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 + -