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

📄 stm32f10x_gpio.c

📁 stm32f10xx的中文译文例程
💻 C
📖 第 1 页 / 共 2 页
字号:
u8 GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
{
  u8 bitstatus = 0x00;

  /* Check the parameters [检查参数]*/
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); 
  
  if ((GPIOx->ODR & GPIO_Pin) != (u32)Bit_RESET)
  {
    bitstatus = (u8)Bit_SET;
  }
  else
  {
    bitstatus = (u8)Bit_RESET;
  }
  return bitstatus;
}

/*******************************************************************************
* 函数名称: GPIO_ReadOutputData
* 功能描述: 从特定的GPIO输出数据端口读取数据.
* 输入参数: GPIOx:x可为A到G来选择特定的GPIO设备.
* 输出参数: 无
* 返回参数: GPIO输出数据端口值.
*******************************************************************************/
u16 GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
    
  return ((u16)GPIOx->ODR);
}

/*******************************************************************************
* 函数名称: GPIO_SetBits
* 功能描述: 置位选定的数据端口位.
* 输入参数: (1)GPIOx:x可为A到G来选择特定的GPIO设备.
*           (2)GPIO_Pin:确定要写入的端口位。该参数可为GPIO_Pin_x的任意组合,其中x为0到15。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  
  GPIOx->BSRR = GPIO_Pin;
}

/*******************************************************************************
* 函数名称: GPIO_ResetBits
* 功能描述: 清除选定的数据端口位.
* 输入参数: (1)GPIOx:x可为A到G来选择特定的GPIO设备.
*           (2)GPIO_Pin:指定被写入的端口位。该参数可为GPIO_Pin_x的任意组合,其中x为0到15。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  
  GPIOx->BRR = GPIO_Pin;
}

/*******************************************************************************
* 函数名称: GPIO_WriteBit
* 功能描述: 置位或清除选定的数据端口位
* 输入参数: (1)GPIOx:x可为A到G来选择特定的GPIO设备.
*           (2)GPIO_Pin:指定被写入的端口位。该参数可为GPIO_Pin_x的任意组合,其中x为0到15。
*           (3)BitVal:该参数指定被写入到选定位的值。
*              BitVal必须为BitAction枚举类型值: Bit_RESET:清除端口引脚,Bit_SET:置位端口引脚
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin, BitAction BitVal)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GET_GPIO_PIN(GPIO_Pin));
  assert_param(IS_GPIO_BIT_ACTION(BitVal)); 
  
  if (BitVal != Bit_RESET)
  {
    GPIOx->BSRR = GPIO_Pin;
  }
  else
  {
    GPIOx->BRR = GPIO_Pin;
  }
}

/*******************************************************************************
* 函数名称: GPIO_Write
* 功能描述: 写数据到指定的GPIO端口数据寄存器.
* 输入参数: (1)GPIOx:x可为A到G来选择特定的GPIO设备.
*           (2)PortVal:写入到数据端口寄存器的值.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  
  GPIOx->ODR = PortVal;
}

/*******************************************************************************
* 函数名称: GPIO_PinLockConfig
* 功能描述: 锁定GPIO引脚配置寄存器.
* 输入参数: (1)GPIOx:x可为A到G来选择特定的GPIO设备.
*           (2)GPIO_Pin:指定被写入的端口位。该参数可为GPIO_Pin_x的任意组合,其中x为0到15.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
{
  u32 tmp = 0x00010000;
  
  /* Check the parameters [检查参数]*/
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  
  tmp |= GPIO_Pin;
  /* Set LCKK bit [置位锁定寄存器位]*/
  GPIOx->LCKR = tmp;
  /* Reset LCKK bit [复位锁定寄存器位]*/
  GPIOx->LCKR =  GPIO_Pin;
  /* Set LCKK bit [置位锁定寄存器位]*/
  GPIOx->LCKR = tmp;
  /* Read LCKK bit[读锁定寄存器位]*/
  tmp = GPIOx->LCKR;
  /* Read LCKK bit[读锁定寄存器位]*/
  tmp = GPIOx->LCKR;
}

/*******************************************************************************
* 函数名称: GPIO_EventOutputConfig
* 功能描述: Selects the GPIO pin used as Event output.
* 输入参数: (1)GPIO_PortSource:选择GPIO端口用作事件输出源。GPIOx:x可为A到E来选择特定的GPIO设备.
*           (2)GPIO_PinSource:事件输出引脚。该参数可为GPIO_PinSourcex,这里x可为0到15.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void GPIO_EventOutputConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
{
  u32 tmpreg = 0x00;

  /* Check the parameters [检查参数]*/
  assert_param(IS_GPIO_EVENTOUT_PORT_SOURCE(GPIO_PortSource));
  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
    
  tmpreg = AFIO->EVCR;
  /* Clear the PORT[6:4] and PIN[3:0] bits [清除PORT[6:4] 和 PIN[3:0]位]*/
  tmpreg &= EVCR_PORTPINCONFIG_MASK;
  tmpreg |= (u32)GPIO_PortSource << 0x04;
  tmpreg |= GPIO_PinSource;

  AFIO->EVCR = tmpreg;
}

/*******************************************************************************
* 函数名称: GPIO_EventOutputCmd
* 功能描述: 使能(或禁能)事件输出
* 输入参数: NewState:事件输出的新状态。这个参数可为:ENABLE或DISABLE.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void GPIO_EventOutputCmd(FunctionalState NewState)
{
  /* Check the parameters [检查参数]*/
  assert_param(IS_FUNCTIONAL_STATE(NewState));
  
  *(vu32 *) EVCR_EVOE_BB = (u32)NewState;
}

/*******************************************************************************
* 函数名称: GPIO_PinRemapConfig
* 功能描述: 改变特定引脚的映射.
* 输入参数: (1)GPIO_Remap:选择引脚进行重映射。
*                    GPIO_Remap 用来改变备用功能映射,它的可用值:
*                       - GPIO_Remap_SPI1    [SPI1备用功能映射]
*                       - GPIO_Remap_I2C1    [I2C1备用功能映射]
*                       - GPIO_Remap_USART1  [USART1备用功能映射]
*                       - GPIO_Remap_USART2  [USART2备用功能映射]
*                       - GPIO_PartialRemap_USART3  [USART3备用功能映射]
*                       - GPIO_FullRemap_USART3     [USART3全部备用功能映射]
*                       - GPIO_PartialRemap_TIM1 [TIM1部分备用功能映射]
*                       - GPIO_FullRemap_TIM1    [TIM1全部备用功能映射]
*                       - GPIO_PartialRemap1_TIM2   [TIM2部分1备用功能映射]
*                       - GPIO_PartialRemap2_TIM2   [TIM2部分2备用功能映射]
*                       - GPIO_FullRemap_TIM2       [TIM2全部备用功能映射]
*                       - GPIO_PartialRemap_TIM3    [TIM3部分备用功能映射]
*                       - GPIO_FullRemap_TIM3       [TIM3全部备用功能映射]
*                       - GPIO_Remap_TIM4   [TIM4备用功能映射]
*                       - GPIO_Remap1_CAN   [CAN部分1备用功能映射]
*                       - GPIO_Remap2_CAN   [CAN部分2备用功能映射]
*                       - GPIO_Remap_PD01   [PD01备用功能映射]
*                       - GPIO_Remap_TIM5CH4_LSI   [TIM5CH4_LSI备用功能映射]
*                       - GPIO_Remap_ADC1_ETRGINJ   [ADC1_ETRGINJ备用功能映射]
*                       - GPIO_Remap_ADC1_ETRGREG   [ADC1_ETRGREG备用功能映射]
*                       - GPIO_Remap_ADC2_ETRGINJ   [ADC2_ETRGINJ备用功能映射]
*                       - GPIO_Remap_ADC2_ETRGREG   [ADC2_ETRGREG备用功能映射]
*                       - GPIO_Remap_SWJ_NoJTRST   [全部SWJ使能(JTAG-DP+ SW-DP)但不包括JTRST]
*                       - GPIO_Remap_SWJ_JTAGDisable [JTAG-DP禁能但SW-DP使能]
*                       - GPIO_Remap_SWJ_Disable   [全部SWJ禁能(JTAG-DP SW-DP)]
*          (2)NewState:端口引脚重映射的新状态该参数可为:ENABLE或DISABLE.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void GPIO_PinRemapConfig(u32 GPIO_Remap, FunctionalState NewState)
{
  u32 tmp = 0x00, tmp1 = 0x00, tmpreg = 0x00, tmpmask = 0x00;

  /* Check the parameters [检查参数]*/
  assert_param(IS_GPIO_REMAP(GPIO_Remap));
  assert_param(IS_FUNCTIONAL_STATE(NewState));  
  
  tmpreg = AFIO->MAPR;

  tmpmask = (GPIO_Remap & DBGAFR_POSITION_MASK) >> 0x10;
  tmp = GPIO_Remap & LSB_MASK;

  if ((GPIO_Remap & (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK)) == (DBGAFR_LOCATION_MASK | DBGAFR_NUMBITS_MASK))
  {
    tmpreg &= DBGAFR_SWJCFG_MASK;
    AFIO->MAPR &= DBGAFR_SWJCFG_MASK;
  }
  else if ((GPIO_Remap & DBGAFR_NUMBITS_MASK) == DBGAFR_NUMBITS_MASK)
  {
    tmp1 = ((u32)0x03) << tmpmask;
    tmpreg &= ~tmp1;
    tmpreg |= ~DBGAFR_SWJCFG_MASK;
  }
  else
  {
    tmpreg &= ~(tmp << ((GPIO_Remap >> 0x15)*0x10));
    tmpreg |= ~DBGAFR_SWJCFG_MASK;
  }

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

  AFIO->MAPR = tmpreg;
}

/*******************************************************************************
* 函数名称: GPIO_EXTILineConfig
* 功能描述: 选择GPIO引脚作为EXTI线.
* 输入参数: (1)GPIO_PortSource:选择将要用作EXTI线的源的GPIO端口。GPIOx:x可为A到G来选择特定的GPIO设备.
*           (2)GPIO_PinSource:需要配置的EXTI线。这个参数可以是GPIO_PinSourcex,其中x为0到15.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void GPIO_EXTILineConfig(u8 GPIO_PortSource, u8 GPIO_PinSource)
{
  u32 tmp = 0x00;

  /* Check the parameters [检查参数]*/
  assert_param(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PortSource));
  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));
  
  tmp = ((u32)0x0F) << (0x04 * (GPIO_PinSource & (u8)0x03));

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

/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

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