gpio写完,延时不准
This commit is contained in:
+33
-82
@@ -1,124 +1,75 @@
|
||||
#include "Bsp.h"
|
||||
|
||||
#ifdef USE_DIGITAL_OUTPUT
|
||||
extern GPIO_ST DigiTalOutPut[DO_NUM];
|
||||
#endif
|
||||
|
||||
#ifdef USE_DIGITAL_INPUT
|
||||
extern GPIO_ST DigiTalInPut[DI_NUM];
|
||||
#endif
|
||||
|
||||
//LED灯数组
|
||||
#ifdef USE_LED
|
||||
extern GPIO_ST DigiTalLed[LED_NUM];
|
||||
#endif
|
||||
|
||||
void SystemEnableGpioClock(uint32_t GpioBase)
|
||||
/**
|
||||
* @brief 启用GPIO口时钟
|
||||
* @note void
|
||||
* @param GpioX:GPIO引脚
|
||||
* @retval void
|
||||
*/
|
||||
void GpioClockEnable(const GPIO_MAP_T *GpioX)
|
||||
{
|
||||
if(GpioBase == (uint32_t)GPIOA)
|
||||
if(GpioX->Periph == GPIOA)
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
|
||||
|
||||
if(GpioBase == (uint32_t)GPIOB)
|
||||
if(GpioX->Periph == GPIOB)
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
|
||||
|
||||
if(GpioBase == (uint32_t)GPIOC)
|
||||
if(GpioX->Periph == GPIOC)
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
|
||||
|
||||
if(GpioBase == (uint32_t)GPIOD)
|
||||
if(GpioX->Periph == GPIOD)
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
|
||||
|
||||
if(GpioBase == (uint32_t)GPIOE)
|
||||
if(GpioX->Periph == GPIOE)
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
|
||||
|
||||
if(GpioBase == (uint32_t)GPIOF)
|
||||
if(GpioX->Periph == GPIOF)
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);
|
||||
|
||||
if(GpioBase == (uint32_t)GPIOG)
|
||||
if(GpioX->Periph == GPIOG)
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 初始化GPIO口外设的时钟
|
||||
* @param void
|
||||
* @retval void
|
||||
* @note void
|
||||
* @example void
|
||||
*/
|
||||
void SystemGpioInit(void)
|
||||
{
|
||||
uint8_t i = 0x00;
|
||||
|
||||
if (DO_NUM != NULL)
|
||||
{
|
||||
for (i = 0;i < DO_NUM;i++)
|
||||
{
|
||||
SystemEnableGpioClock((uint32_t)DigiTalOutPut[i].GpioPort);
|
||||
}
|
||||
}
|
||||
|
||||
if (DI_NUM != NULL)
|
||||
{
|
||||
for (i = 0;i < DI_NUM;i++)
|
||||
{
|
||||
SystemEnableGpioClock((uint32_t)DigiTalInPut[i].GpioPort);
|
||||
}
|
||||
}
|
||||
|
||||
if (LED_NUM != NULL)
|
||||
{
|
||||
for (i = 0;i < LED_NUM;i++)
|
||||
{
|
||||
SystemEnableGpioClock((uint32_t)DigiTalLed[i].GpioPort);
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief 配置GPIO口
|
||||
* @param GpioX:GPIO组 GpioPinX:GPIO引脚 GpioMode:GPIO模式 GpioSpeed:GPIO速度
|
||||
* @note void
|
||||
* @param GpioX:引脚 GpioMode:GPIO模式 GpioSpeed:GPIO速度
|
||||
* @retval void
|
||||
* @note void
|
||||
* @example void
|
||||
*/
|
||||
void GpioConfig(GPIO_TypeDef *GpioX, uint16_t GpioPinX,
|
||||
GPIOMode_TypeDef GpioMode, GPIOSpeed_TypeDef GpioSpeed)
|
||||
void GpioConfig(const GPIO_MAP_T *GpioX, GPIOMode_TypeDef GpioMode, GPIOSpeed_TypeDef GpioSpeed)
|
||||
{
|
||||
GPIO_InitTypeDef GpioInitSt;
|
||||
|
||||
GpioInitSt.GPIO_Pin = GpioPinX;
|
||||
GpioInitSt.GPIO_Pin = GpioX->GpioPin;
|
||||
GpioInitSt.GPIO_Mode = GpioMode;
|
||||
GpioInitSt.GPIO_Speed = GpioSpeed;
|
||||
|
||||
GPIO_Init(GpioX, &GpioInitSt);
|
||||
GPIO_Init(GpioX->Periph, &GpioInitSt);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 改变GPIO口状态
|
||||
* @param GpioX:GPIO组 GpioPinX:GPIO引脚 state: GPIO状态
|
||||
* @note
|
||||
* @param GpioX:GPIO引脚 Value:设置值
|
||||
* @retval void
|
||||
* @note void
|
||||
* @example void
|
||||
*/
|
||||
void GpioSetSts(GPIO_TypeDef *GpioX, uint16_t GpioPinX, uint8_t Status)
|
||||
void GpioSet(const GPIO_MAP_T *GpioX, uint8_t Value)
|
||||
{
|
||||
if (Status == (uint8_t)RESET)
|
||||
if (Value == (uint8_t)RESET)
|
||||
{
|
||||
GPIO_ResetBits(GpioX, GpioPinX);
|
||||
}
|
||||
else if (Status == (uint8_t)SET)
|
||||
GPIO_ResetBits(GpioX->Periph, GpioX->GpioPin);
|
||||
}
|
||||
else if (Value == (uint8_t)SET)
|
||||
{
|
||||
GPIO_SetBits(GpioX, GpioPinX);
|
||||
GPIO_SetBits(GpioX->Periph, GpioX->GpioPin);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 读取GPIO口状态
|
||||
* @param GpioX:GPIO组 GpioPinX:GPIO引脚
|
||||
* @retval GPIO状态
|
||||
* @note void
|
||||
* @example void
|
||||
* @brief 读取GPIO口状态
|
||||
* @note
|
||||
* @param GpioX:GPIO引脚
|
||||
* @retval 0:低电平,1高电平
|
||||
*/
|
||||
uint8_t GpioGetSts(GPIO_TypeDef *GpioX, uint16_t GpioPinX)
|
||||
unsigned char GpioGet(const GPIO_MAP_T *GpioX)
|
||||
{
|
||||
return (uint8_t)GPIO_ReadInputDataBit(GpioX, GpioPinX);
|
||||
return (unsigned char)GPIO_ReadInputDataBit(GpioX->Periph, GpioX->GpioPin);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user