struct的问题

时间:2012-03-15 08:59:17

标签: c

我正在尝试使用签名

调用库函数
void GPIO_Init(GPIO_InitTypeDef* GPIO_InitStruct)

其中GPIO_InitTypeDeftypedef结构。

我尝试过以下操作:

GPIO_InitTypeDef NE1 = {
    7, GPIO_Mode_AF, GPIO_Speed_25MHz, GPIO_OType_PP, GPIO_PuPd_UP
};
GPIO_Init(NE1);

但是我收到编译错误

  

错误:期望'GPIO_Init'的参数1的不兼容类型   'struct GPIO_InitTypeDef *'但参数类型为'GPIO_InitTypeDef'

我还尝试使用struct关键字:

struct GPIO_InitTypeDef NE1 = {
    7, GPIO_Mode_AF, GPIO_Speed_25MHz, GPIO_OType_PP, GPIO_PuPd_UP
};
GPIO_Init(NE1);

但是我得到了编译错误

  

错误:'NE1'的存储大小未知

我做错了什么,以及拨打GPIO_Init的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您需要使用:

GPIO_Init (&NE1); // <- Note the '&' indicating pointer-to

该函数需要指针GPIO_InitStruct结构,如下所示:

void GPIO_Init (GPIO_InitTypeDef * GPIO_InitStruct)
//                               ^
//                            pointer

但是你的NE1变量是一个真正的结构,所以你必须使用&来获取它的指针,所以你可以传递它。

因为您试图传递结构而不是指向结构的指针,这就是导致incompatible type错误的原因。