包含.h文件时出现SW4STM32编译器错误

包含.h文件时出现SW4STM32编译器错误,stm32,hal,Stm32,Hal,我正在尝试将LCD与Nucleo64 STM32f103RB连接。 我在CubeMX 6.0.1中创建了一个项目,其中包含Cube固件1.8.3。 我完成了.h文件的编写并编译了它,最后没有出现任何错误,但当我将它包含在.c文件中时,它没有编译,并产生了非常出乎意料的错误 .h文件代码如下所示: /[![enter image description here][1]][1]* S6D0154_LCD.h * * Created on: 16-Nov-2020 * Autho

我正在尝试将LCD与Nucleo64 STM32f103RB连接。 我在CubeMX 6.0.1中创建了一个项目,其中包含Cube固件1.8.3。 我完成了.h文件的编写并编译了它,最后没有出现任何错误,但当我将它包含在.c文件中时,它没有编译,并产生了非常出乎意料的错误

.h文件代码如下所示:

 /[![enter image description here][1]][1]* S6D0154_LCD.h
 *
 *  Created on: 16-Nov-2020
 *      Author: NUCLEO
 */

#ifndef INC_S6D0154_LCD_H_
#define INC_S6D0154_LCD_H_

#include "stm32f103xb.h"
#include "stm32f1xx_hal_gpio.h"


typedef struct{
    uint16_t        pin;        //  LCD Pins interface to STM32.
    GPIO_TypeDef    port;
}LCD_PIN_typedef;

typedef enum{
    write_index,
    write_WDR,                  //  LCD Operation to be performed.
    read_status,
    read_RDR
}LCD_OPERATION;

typedef enum{
    pins_READ,                  //  STM32 port_pins mode for LCD_data_pins interface.
    pins_WRITE
}LCD_INTERFACE_MODE;

//................................................
//...........LCD_PINS CONNECTIONS................|
//................................................
LCD_PIN_typedef LCD_D0      = {GPIO_PIN_9,  GPIOA};
LCD_PIN_typedef LCD_D1      = {GPIO_PIN_7,  GPIOC};
LCD_PIN_typedef LCD_D2      = {GPIO_PIN_10, GPIOA};
LCD_PIN_typedef LCD_D3      = {GPIO_PIN_3,  GPIOB};
LCD_PIN_typedef LCD_D4      = {GPIO_PIN_5,  GPIOB};
LCD_PIN_typedef LCD_D5      = {GPIO_PIN_4,  GPIOB};
LCD_PIN_typedef LCD_D6      = {GPIO_PIN_10, GPIOB};
LCD_PIN_typedef LCD_D7      = {GPIO_PIN_8,  GPIOA};
//..................................................
LCD_PIN_typedef LCD_RESET   = {GPIO_PIN_1, GPIOC};
LCD_PIN_typedef LCD_RD      = {GPIO_PIN_0, GPIOA};
LCD_PIN_typedef LCD_WR      = {GPIO_PIN_1, GPIOA};
LCD_PIN_typedef LCD_RS      = {GPIO_PIN_4, GPIOA};
LCD_PIN_typedef LCD_CS      = {GPIO_PIN_0, GPIOB};
//...................................................
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
//...................................................
//...............LCD_OPERATIONS.....................|
//...................................................
void LCD_PIN_WRITE(LCD_PIN_typedef pin, GPIO_PinState state);
uint32_t LCD_UPDATE(uint32_t lcd_data, LCD_OPERATION operation);
void LCD_READ_INIT(void);
void LCD_WRITE_INIT(void);
void LCD_INIT(void);

#endif /* INC_S6D0154_LCD_H_ */
添加.h文件后在.h和.c文件中产生错误。附加屏幕截图。 请解释,因为我是C和STM32 HAL的新手。谢谢


第一个问题是,内部结构
LCD_PIN_typedef
您有一个成员
GPIO_typedef port
,但它应该是
GPIO_typedef*port

现在在my.c和.h文件中解决了警告和错误,但在HAL drivers.h文件中有一长串错误,即使在我没有使用的头文件中也是如此。您确定吗,HAL库中所有必要的标题都包含在项目中?我只使用了
Makefile
来构建嵌入式项目,但我知道来自不同供应商的IDE在添加/删除源/头文件时可能会很棘手。正如您所看到的,编译器说,它对给定的类型一无所知,所以HAL库中缺少头文件肯定是个问题。