Не видит *.h (stm32cubeIDE)

Доброго времени суток!

В Stm32cubeide почему то не видится заголовок. С заголовком транслируется, но даёт ошибку. Второй раз транслируется без ошибки, но заголовка не видит.

Короче вставлю программу, может поможете:

#ifndef MCP23S17_H_
#define MCP23S17_H_

#include <stdint.h>
#include "stm32l4xx_hal.h"
#include "MCP23S17.h"

// --------- Register list ---------
// ---------------------------------
// Using IOCON.BANK = 0
#define IODIRA		0x00
#define IODIRB		0x01
#define IPOLA		0x02
#define IPOLB		0x03
#define GPIINTENA	0x04
#define GPIINTENB	0x05
#define DEFVALA		0x06
#define DEFVALB		0x07
#define INTCONA		0x08
#define INTCONB		0x09
#define IOCON		0x0A
#define GPPUA		0x0C
#define GPPUB		0x0D
#define INTFA		0x0E
#define INTFB		0x0F
#define INTCAPA		0x10
#define INTCAPB		0x11
#define GPIOA_MCP	0x12
#define GPIOB_MCP	0x13
#define OLATA		0x14
#define OLATB		0x15

// --------- IOCON configs ---------
// ---------------------------------
// Using IOCON.BANK = 0
#define BANK_ON		0x80
#define BANK_OFF	0x00
#define MIRROR_ON	0x40
#define MIRROR_OFF	0x00
#define SEQOP_ON	0x20
#define SEQOP_OFF	0x00
#define DISSLW_ON	0x10
#define DISSLW_OFF	0x00
#define HAEN_ON		0x08
#define HAEN_OFF	0x00
#define ODR_ON		0x04
#define ODR_OFF		0x00
#define INTPOL_ON	0x02
#define INTPOL_OFF  0x00

#define ADDR_FIX_BIT 0b01000000

typedef struct MCP23S17 {

	uint8_t hardware_addr;
	uint8_t opcode;
	uint16_t CS;
	uint16_t t_buffer;
	uint16_t r_buffer;
	GPIO_TypeDef* peripheral;
	SPI_HandleTypeDef spi_handler;

//    int (*read_REG)(struct MCP23S17* mcp23s17, uint8_t reg_opcode, uint8_t reg_addr);
//    void (*write_REG)(struct MCP23S17* mcp23s17, uint8_t reg_opcode, uint8_t reg_addr);
//    int (*check_REG)(uint8_t reg_addr);

} MCP23S17;


void MCP23S17_Init(MCP23S17* mcp23s17, uint8_t hardware_addr, uint16_t CS, GPIO_TypeDef* peripheral, SPI_HandleTypeDef spi_handler);

uint8_t MCP23S17_read_REG(MCP23S17* mcp23s17, uint8_t reg_addr);

void MCP23S17_write_REG(MCP23S17* mcp23s17, uint8_t reg_addr, uint8_t config);

int MCP23S17_check_REG(uint8_t reg_addr);

#endif

И ссылка на ГИТ: GitHub - gabrielvachon/MCP23S17-STM32: a basic MCP23S17 (SPI) read/write library for STM32

Ничего не понял. Что за ошибка? Когда появляется?
.h-файл положил в Inc, .c-файл в src?

Привет! При компилировании выдаёт ошибку - нет файла. Файлы положил в доступные каталоги, причём делал в разные. И нихера.

Это как так? о_0
Для h-файлов определен один каталог - Inc.

Ну не совсем так. Там определяются доступные каталоги. К примеру /Drivers. Да хер с ним, я клал и в Core/Inc и в Drivers/Inc. Прописывал все пути. Нихера. Ошибка в программе или я эльфийка с грудями третьего размера.

Ну ты вроде бы не новичок, должен понимать что нужно детально проблему описывать. Иначе все это как «гадание на хрустальном шаре» будет.
ЗЫ: Какой мк использовал в проекте?

А не могу… Если есть Stm32cubeide создай SPI1 и подключи класс из ГитХаба. Или я идиот.

Ну на блю пилл

Подключил.
Только у меня нет репозитория для L4xx, я подключил к F4xx (соответственно поменял инклюд в .h-файле)…

#ifndef MCP23S17_H_
#define MCP23S17_H_

#include <stdint.h>
//#include "stm32l4xx_hal.h"
#include "stm32f4xx_hal.h"

// --------- Register list ---------
// ---------------------------------
// Using IOCON.BANK = 0
#define IODIRA		0x00
#define IODIRB		0x01

Ну и после компиляции на “выхлопе” вот это:

19:51:49 **** Incremental Build of configuration Debug for project 401_Blink ****
make -j12 all 
arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F401xE -c -I../Core/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc -I../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I../Drivers/CMSIS/Include -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -o "Core/Src/main.o"
arm-none-eabi-gcc -o "401_Blink.elf" @"objects.list"   -mcpu=cortex-m4 -T"D:\STM32\workspace_1.6.0\401_Blink\STM32F401RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="401_Blink.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
Finished building target: 401_Blink.elf
 
arm-none-eabi-size   401_Blink.elf 
arm-none-eabi-objdump -h -S  401_Blink.elf  > "401_Blink.list"
arm-none-eabi-objcopy  -O binary  401_Blink.elf  "401_Blink.bin"
   text	   data	    bss	    dec	    hex	filename
   8020	     20	   1732	   9772	   262c	401_Blink.elf
Finished building: default.size.stdout
 
Finished building: 401_Blink.bin
 
Finished building: 401_Blink.list
 

19:51:50 Build Finished. 0 errors, 0 warnings. (took 919ms)

Так что ищи где у тебя “косяк”, библиотека точно рабочая.

Так может быть оно ругалось тоже на файл “stm32l4xx_hal.h”? Ты же вывод так и не показал… ))

Ну халавская библиотека вроде уже стандарт для STM32? Или я что-то пропустил?

Если бы чего не показал, так ответил бы “нет данных”, а он говорит, что нет файла.

Не понял эту фразу. Если речь идет о “stm32l4xx_hal.h”, то этот заголовочный файл подключается если:

  1. При создании проекта был выбран чип stm32l4xx
  2. По нажатии кнопки завершения создания проекта, если данный чип был выбран впервые, ИДЕ скачивает репозиторий с сайта ST. Если ты находишься в России, то скачать напрямую сейчас не получится (через VPN только).

Но, опять таки, библиотека “заточена” под чипы серии stm32l4xx, причем тут блюпил со своим stm32f103 ??

Какого?

Спасибо!

Вот что значит зашоренность. stm32l4xx - вот проблема. Разницы с stm32f103 по SPI никакой. Спасибо - зашорен был!

Ну и коль я скрин всё равно сделал )))

Ну коль скрин ты сделал, то и сделай скрин справа, там где про подключение файлов. Случаем там нет проблем?

За идиота меня не держите

А что с ними не так?
Ну держи…

Мда…
Отдохни, сделай перерыв до завтра. А завтра эту тему перечитай и сделай так как сделал я. Но опять таки… Библиотека “заточена” под stm32L4xx, блюпил не катит. Даже в F4xx пришлось инициализацию менять, так как она отличается.