76 lines
1.9 KiB
C
76 lines
1.9 KiB
C
#include "Bsp.h"
|
|
|
|
/**
|
|
* @brief 启用GPIO口时钟
|
|
* @note void
|
|
* @param GpioX:GPIO引脚
|
|
* @retval void
|
|
*/
|
|
void GpioClockEnable(const GPIO_MAP_T *GpioX)
|
|
{
|
|
if(GpioX->Periph == GPIOA)
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
|
|
|
|
if(GpioX->Periph == GPIOB)
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
|
|
|
|
if(GpioX->Periph == GPIOC)
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
|
|
|
|
if(GpioX->Periph == GPIOD)
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
|
|
|
|
if(GpioX->Periph == GPIOE)
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
|
|
|
|
if(GpioX->Periph == GPIOF)
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);
|
|
|
|
if(GpioX->Periph == GPIOG)
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);
|
|
}
|
|
/**
|
|
* @brief 配置GPIO口
|
|
* @note void
|
|
* @param GpioX:引脚 GpioMode:GPIO模式 GpioSpeed:GPIO速度
|
|
* @retval void
|
|
*/
|
|
void GpioConfig(const GPIO_MAP_T *GpioX, GPIOMode_TypeDef GpioMode, GPIOSpeed_TypeDef GpioSpeed)
|
|
{
|
|
GPIO_InitTypeDef GpioInitSt;
|
|
|
|
GpioInitSt.GPIO_Pin = GpioX->GpioPin;
|
|
GpioInitSt.GPIO_Mode = GpioMode;
|
|
GpioInitSt.GPIO_Speed = GpioSpeed;
|
|
|
|
GPIO_Init(GpioX->Periph, &GpioInitSt);
|
|
}
|
|
/**
|
|
* @brief 改变GPIO口状态
|
|
* @note
|
|
* @param GpioX:GPIO引脚 Value:设置值
|
|
* @retval void
|
|
*/
|
|
void GpioSet(const GPIO_MAP_T *GpioX, uint8_t Value)
|
|
{
|
|
if (Value == (uint8_t)RESET)
|
|
{
|
|
GPIO_ResetBits(GpioX->Periph, GpioX->GpioPin);
|
|
}
|
|
else if (Value == (uint8_t)SET)
|
|
{
|
|
GPIO_SetBits(GpioX->Periph, GpioX->GpioPin);
|
|
}
|
|
}
|
|
/**
|
|
* @brief 读取GPIO口状态
|
|
* @note
|
|
* @param GpioX:GPIO引脚
|
|
* @retval 0:低电平,1高电平
|
|
*/
|
|
unsigned char GpioGet(const GPIO_MAP_T *GpioX)
|
|
{
|
|
return (unsigned char)GPIO_ReadInputDataBit(GpioX->Periph, GpioX->GpioPin);
|
|
}
|
|
|