如何使用结构中的引脚



你好,STM32有问题。在我为eeprom编写的库中,我想使用结构中的引脚和端口,然后在HAL_GPIO_Write_Pin函数中使用它们,但我无法成功。错误:"HAL_GPIO_WritePin"Eeprom的参数2的类型不兼容。

(很抱歉,如果我没有正确提问,这是我第一次使用它。(

EEPROM.h   
typedef struct
{
SPI_HandleTypeDef* SPI_EEPROM ;
uint16_t CS_PIN ;
GPIO_TypeDef* CS_PORT ;
uint32_t Write_Protect ;
GPIO_PinState CS_LOW ;
GPIO_PinState CS_HIGH ;
}EEPROM;
/*****************************************************************/
EEPROM.c 

SPI_HandleTypeDef* hspi1 ;
EEPROM    EEPROM_1 ;
void Eeprom_Init( )
{
EEPROM_1.SPI_EEPROM    = hspi1 ;
EEPROM_1.Write_Protect = EEPROM_WRITE ;
EEPROM_1.CS_PIN        = SPI2_SS_Pin ;
EEPROM_1.CS_PORT       = SPI2_SS_GPIO_Port ;
EEPROM_1.CS_LOW        = GPIO_PIN_RESET ;
EEPROM_1.CS_HIGH       = GPIO_PIN_SET ;
}

void EEPROM_1_CS_HIGH (EEPROM CS_PORT, EEPROM CS_PIN, EEPROM CS_HIGH)
{
HAL_GPIO_WritePin( &CS_PORT, CS_PIN, CS_HIGH ) ;
}

void EEPROM_1_CS_LOW (EEPROM CS_PORT, EEPROM CS_PIN, EEPROM CS_LOW)
{
HAL_GPIO_WritePin( &CS_PORT, CS_PIN, CS_LOW ) ;
}

在行中:

void EEPROM_1_CS_HIGH (EEPROM CS_PORT, EEPROM CS_PIN, EEPROM CS_HIGH)

您说函数EEPROM_1_CS_HIGH有三个参数,它们都是一个完整的结构,通过值传递。

您可能只想有一个参数,即结构,然后在函数中访问其成员。此外,您应该使用指针*通过引用传递结构。

void EEPROM_CS_HIGH (EEPROM *memory)
{
HAL_GPIO_WritePin(memory->CS_PORT, memory->CS_PIN, memory->CS_HIGH);
}

如果你想要一个访问特定实例的全局数据的函数,你可以这样做:

void EEPROM_1_CS_HIGH (void)
{
EEPROM_CS_HIGH(&EEPROM_1);
}

相关内容

  • 没有找到相关文章

最新更新