Files
2026-05-25 23:53:39 +08:00

58 lines
1.4 KiB
C

#include "Bsp.h"
/**
* @brief 启用GPIO口时钟
* @note void
* @param GpioX:GPIO引脚
* @retval void
*/
void GpioClockEnable(const GPIO_MAP_T *GpioX)
{
GpioX->ClockCmd(GpioX->ClockTree,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->Periph.GpioPin;
GpioInitSt.GPIO_Mode = GpioMode;
GpioInitSt.GPIO_Speed = GpioSpeed;
//打开外设时钟
GpioClockEnable(GpioX);
GPIO_Init(GpioX->Periph.GpioPort, &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.GpioPort, GpioX->Periph.GpioPin);
}
else if (Value == (uint8_t)SET)
{
GPIO_SetBits(GpioX->Periph.GpioPort, GpioX->Periph.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.GpioPort, GpioX->Periph.GpioPin);
}